Anmelden

View Full Version : Sql Summen bilden 2.Teil



Seiten : 1 [2]

tarkusch
13-12-12, 08:41
Danke Andreas und Birgitta für eure Hilfe.

tarkusch
13-12-12, 09:30
Du musst dem Kind Max(VGZT) einen Namen geben und diesen verwenden.

Ich würde an dieser Stelle auch keinen Sub-Select verwenden sondern eine CTE (Common Table Expression) vorziehen. Verschachtelte Sub-Selects werden schnell unüberschaubar.


With x as (Select GNR, TNR, ZNR, Max(VGZT) MaxVGZT
From YourFile
Group By GNR, TNR, ZNR)
Select Sum(MaxVGZT)
From X;

Birgitta

Hallo Brigitta,

wenn ich noch die 2 anderen Felder dazufüge seq und Pnr verfälscht das mein Ergebnis(1061).

Die richtigen Minuten sind 821.

Gibt es da noch eine Möglichkeit diese Statement zu verfeinern?

andreaspr@aon.at
13-12-12, 10:31
Vielleicht brauchst du sowas?:


With x as (Select GNR, TNR, ZNR, Max(VGZT) MaxVGZT
From YourFile
Group By GNR, TNR, ZNR),
y as (select * from YourFile)
Select y.seq, y.PNR, Sum(x.MaxVGZT)
From X, Y
where x.gnr = y.gnr
And x.tnr = y.tnr
and x.znr = y.znr;

(ungetestet)

tarkusch
13-12-12, 13:15
Andreas ich habe das Statement leider so nicht hinbekommen.

Habe das Sql in 2 Statements zerlegt.

Thx


Tarki

tarkusch
18-12-12, 09:54
Hi,

bekomme bei unten angeführten Statement die Meldung:
Ergebnis der Anweisung enthält mehr als eine Zeile.

Aber unten steht ja select sum(MaxVZT).

Ist eigentlich in dem Statement möglich, das ich dort ein Subselect, was bestimmte Aufträge auswählt, möglich?

oder wie löse ich das anders?

Dank im Voraus




with x as (
SELECT GNR1, TNR1, ZNR1, max(VZT) MaxVZT
FROM MyFile1 WHERE auf1 = (select AUF2 from MyFile2 WHERE
DAT >= 20121101 AND DAT <= 20121130)

group by GNR1, TNR1, ZNR1)
select sum(MaxVZT)

From x

Fuerchau
18-12-12, 10:44
with x as (
SELECT GNR1, TNR1, ZNR1, max(VZT) MaxVZT
FROM MyFile1 WHERE auf1 in (select AUF2 from MyFile2 WHERE
DAT >= 20121101 AND DAT <= 20121130)

group by GNR1, TNR1, ZNR1)
select sum(MaxVZT)

From x

Der Subselect im Where liefert mehr als eine Zeile.

tarkusch
18-12-12, 10:55
was muss ich eigentlich definieren dass ich nur eine Gesamtsumme bekomme?

andreaspr@aon.at
18-12-12, 12:23
was muss ich eigentlich definieren dass ich nur eine Gesamtsumme bekomme?

Was genau meinst du damit?
Um einfach "NUR" eine Summe zu bekommen, verwendest du MAX().

Fuerchau
18-12-12, 12:31
Nur eine Summe ?
Einfach "select sum(MyField) from Myfile where ...".

tarkusch
18-12-12, 15:18
Sorry Fehler war meinerseits.