PDA

View Full Version : Sql Summen bilden



Seiten : [1] 2

tarkusch
30-11-12, 11:53
Mahlzeit,

ich möchte gerne Summen aus 2 Dateien bilden.
ZW1 sind Vorgabezeiten hinterlegt.
ZW2 sind Stempelungen der Mitarbeiter hinterlegt.

Da ja ein Auftrag mehrfach mit der selben Tätigkeit angestempelt werden kann,
bekomme ich bei der Vorgabezeit (W1VZT) falsche Werte,
da die Vorgabezeit immer wieder aufsummiert wird.

Ich habe schon versucht die Aufträge herauszufilter und mit einem Subselect zu füllen,
aber hat nichts geholfen
Ich bräuchte das W1Auf einfach distinct,
aber wie bekomme ich das in diesem Statement unter?



SELECT SUM(W2MIN), SUM(W1VZT)
FROM ZW1, ZW2
WHERE W1AUF = W2AUF
AND W1FNE = W2FNR
AND W2PNR = W1PNR
AND W2PNR = 36166
AND W2DAT = 20121001



W1MIN = gestempelte Zeit
W2VZT = Vorgabezeit
W1FNE = W2FNR (Folgenummer wo ersichtlich ist welche Stempelung zusammengehören)


Gruß

Tarki

Fuerchau
30-11-12, 11:56
Dann machs doch distinct:

sum(distinct Wert)

summiert nur eindeutige Werte.

tarkusch
30-11-12, 12:08
Diese Variante hatte ich schon ausprobiert.

Mit SELECT SUM(W2MIN), SUM(W1VZT), W2AUF etc..

bekomme ich 3 Zeilen, wo die Teilsummen stimmen,

aber sobald ich das W2AUF im select weglasse,
ist das Ergebnis nicht korrekt.

andreaspr@aon.at
30-11-12, 12:28
Ich habe mal ein ähnliches Problem gehabt.
Bin mir jetzt nicht sicher, aber ich glaube, du musst zuerst die Summe für jede Tabelle einzeln machen.

Hier mal mein Gedanke (Ungetestet!!)



With x as (SELECT W1AUF, W1FNE, W1PNR , SUM(W1VZT) W1VZT
FROM ZW1
GROUP BY W1AUF, W1FNE, W1PNR),
y as (SELECT W2AUF, W2FNR , W2PNR , SUM(W2MIN) W2MIN
FROM ZW2
GROUP BY W2AUF, W2FNR , W2PNR)

SELECT SUM(W2MIN), SUM(W1VZT)
FROM x, y
WHERE W1AUF = W2AUF
AND W1FNE = W2FNR
AND W2PNR = W1PNR
AND W2PNR = 36166
AND W2DAT = 20121001


lg Andreas

alfredo
30-11-12, 12:28
Ich würde das ungefähr so formulieren:
ZW1 = Vorgaben
ZW2 = Istzeiten

With X as
(Select w2auf, sum(w2min) as IST
from ZW2
Groupb by w2auf)
Select A.w1auf, A.w1vzt, x.IST
from ZW1 A
Inner Join X on A.W1AUF=X.W2AUF

tarkusch
30-11-12, 12:50
Danke an alle!
ich kannte bis dato with x nicht!

kann ich das im Free einfach exec sql einfuegen?

andreaspr@aon.at
30-11-12, 13:07
kann ich das im Free einfach exec sql einfuegen?

Genau, dass kannst du ganz normal wie ein SELECT verwenden.

tarkusch
30-11-12, 13:15
Dankeschön und allen noch ein schönes Wochenende!

tarkusch
03-12-12, 15:12
Ich habe mal ein ähnliches Problem gehabt.
Bin mir jetzt nicht sicher, aber ich glaube, du musst zuerst die Summe für jede Tabelle einzeln machen.

Hier mal mein Gedanke (Ungetestet!!)



With x as (SELECT W1AUF, W1FNE, W1PNR , SUM(W1VZT) W1VZT
FROM ZW1
GROUP BY W1AUF, W1FNE, W1PNR),
y as (SELECT W2AUF, W2FNR , W2PNR , SUM(W2MIN) W2MIN
FROM ZW2
GROUP BY W2AUF, W2FNR , W2PNR)

SELECT SUM(W2MIN), SUM(W1VZT)
FROM x, y
WHERE W1AUF = W2AUF
AND W1FNE = W2FNR
AND W2PNR = W1PNR
AND W2PNR = 36166
AND W2DAT = 20121001


lg Andreas

Hätte da bitte noch eine Frage:
Wenn ich in dieser Abfrage noch von einer 3. Datei 2 Felder anzeigen möchte, wie zb. Auftragsnummer und Auftragsdatum.
Wie müsste ich das formulieren.

Habe im "with" Teil folgendes eingegeben Z ( Select Fir, Dat, From File group by fir, dat)

Aber im letzten Select akzeptiert er mir die Felder Fir, Dat, etc. nicht.

Wie muss ich das formulieren, dass ich auch die anderen Felder im Sql-statement sehe?

Gruß

Tarki

andreaspr@aon.at
03-12-12, 15:19
Wie genau sieht denn jetzt das Statement aus?