von Frewer » Di, 14.04.2020 17:26
Hallo Robert,
zunächst vielen Dank für Erklärung und Vorschläge. Habe also richtig vermutet mit dem Problem SUM() und leeren Zeilen.
Habe Deinen Vorschlag - letzte Spalte dranhängst - versucht umzusetzen, bin aber ziemlich im "Wald":
Mein SQL:
<</*
SELECT "T1"."Counter" AS "ctr", "T2"."Text" AS "ArtA", "T2"."Kosten" AS "KostenA", "T3"."Text" AS "ArtE", "T3"."Kosten" AS "KostenE", "T4"."SummeA" AS "SumA", "T5"."SummeE" AS "SumE"
FROM
( SELECT DISTINCT CASE
WHEN SELECT COUNT( "ID" ) ........
END AS "Counter" FROM "Abfrage1" AS "a" WHERE "dbok" = 0 ) AS "T1"
LEFT JOIN
( SELECT ( SELECT COUNT( "ID" ) FROM "Abfrage1" WHERE "Wer" = 'A' AND "dbok" = 0 AND "ID" <= "a"."ID" ) AS "lfdNr.", "a".* FROM "Abfrage1" AS "a" WHERE "a"."Wer" = 'A' AND "a"."dbok" = 0 ) AS "T2" ON "T1"."Counter" = "T2"."lfdNr."
LEFT JOIN
( SELECT ( SELECT COUNT( "ID" ) FROM "Abfrage1" WHERE "Wer" = 'E' AND "dbok" = 0 AND "ID" <= "a"."ID" ) AS "lfdNr.", "a".* FROM "Abfrage1" AS "a" WHERE "a"."Wer" = 'E' AND "a"."dbok" = 0 ) AS "T3" ON "T1"."Counter" = "T3"."lfdNr."
LEFT JOIN
( SELECT ( SELECT SUM( "Kosten" ) FROM "Abfrage1" WHERE "Wer" = 'A' AND "dbok" = 0 ) AS "SummeA", "a".* FROM "Abfrage1" AS "a" WHERE "a"."dbok" = 0 ) AS "T4" ON "T1"."Counter" = "T4"."SummeA"
LEFT JOIN
( SELECT ( SELECT SUM( "Kosten" ) FROM "Abfrage1" WHERE "Wer" = 'E' AND "dbok" = 0 ) AS "SummeE", "a".* FROM "Abfrage1" AS "a" WHERE "a"."dbok" = 0 ) AS "T5" ON "T1"."Counter" = "T5"."SummeE"
*/>>
Ergebnis: 2 neue Spalten SumA, SumE aber ohne Inhalt.
Für mich sind die beiden "ON .." Bedingungen unsinnig aber ohne sie geht gar nichts.
Setze ich << ON "T1"."Counter" = "T2"."lfdNr." >> und ON "T1"."Counter" = "T3"."lfdNr." (und natürlich auch in der einleitenden SELECT die Spalten T2.SummeA, T3.SummeE), dann kriege ich 196 (=4*7*7 wobei 4Zeilen KostenA, 7 Zeilen KostenE) Zeilen mit den beiden Summen-Spalten, die in jeder Zeile den richtigen GesamtSummenwert der Spalte "Kosten" beinhalten. Entferne ich die ON Bedingungen für T4, T5 dann Syntax-Fehler, leider nicht analysierbar, wie es in Eurem Handbuch steht.
Also ich experimentieren mit dem SQL Befehlen herum, erkenne aber noch keine Logik. Habe auch probiert gleich zu Beginn die Tabelle T1 durch 2 Spalten zu erweitern, um nach der Auswahl des Counters sofort die Summen zu bilden aber auch das endete in Syntax-Fehlern ohne Unterstützung des "Wo".
Bin sicher, dass Du sofort eine Lösung in Deinem Repertoire hast an der ich natürlich sehr interessiert bin.
Gruß
Frewer
Hallo Robert,
zunächst vielen Dank für Erklärung und Vorschläge. Habe also richtig vermutet mit dem Problem SUM() und leeren Zeilen.
Habe Deinen Vorschlag - letzte Spalte dranhängst - versucht umzusetzen, bin aber ziemlich im "Wald":
Mein SQL:
<</*
SELECT "T1"."Counter" AS "ctr", "T2"."Text" AS "ArtA", "T2"."Kosten" AS "KostenA", "T3"."Text" AS "ArtE", "T3"."Kosten" AS "KostenE", "T4"."SummeA" AS "SumA", "T5"."SummeE" AS "SumE"
FROM
( SELECT DISTINCT CASE
WHEN SELECT COUNT( "ID" ) ........
END AS "Counter" FROM "Abfrage1" AS "a" WHERE "dbok" = 0 ) AS "T1"
LEFT JOIN
( SELECT ( SELECT COUNT( "ID" ) FROM "Abfrage1" WHERE "Wer" = 'A' AND "dbok" = 0 AND "ID" <= "a"."ID" ) AS "lfdNr.", "a".* FROM "Abfrage1" AS "a" WHERE "a"."Wer" = 'A' AND "a"."dbok" = 0 ) AS "T2" ON "T1"."Counter" = "T2"."lfdNr."
LEFT JOIN
( SELECT ( SELECT COUNT( "ID" ) FROM "Abfrage1" WHERE "Wer" = 'E' AND "dbok" = 0 AND "ID" <= "a"."ID" ) AS "lfdNr.", "a".* FROM "Abfrage1" AS "a" WHERE "a"."Wer" = 'E' AND "a"."dbok" = 0 ) AS "T3" ON "T1"."Counter" = "T3"."lfdNr."
LEFT JOIN
( SELECT ( SELECT SUM( "Kosten" ) FROM "Abfrage1" WHERE "Wer" = 'A' AND "dbok" = 0 ) AS "SummeA", "a".* FROM "Abfrage1" AS "a" WHERE "a"."dbok" = 0 ) AS "T4" ON "T1"."Counter" = "T4"."SummeA"
LEFT JOIN
( SELECT ( SELECT SUM( "Kosten" ) FROM "Abfrage1" WHERE "Wer" = 'E' AND "dbok" = 0 ) AS "SummeE", "a".* FROM "Abfrage1" AS "a" WHERE "a"."dbok" = 0 ) AS "T5" ON "T1"."Counter" = "T5"."SummeE"
*/>>
Ergebnis: 2 neue Spalten SumA, SumE aber ohne Inhalt.
Für mich sind die beiden "ON .." Bedingungen unsinnig aber ohne sie geht gar nichts.
Setze ich << ON "T1"."Counter" = "T2"."lfdNr." >> und ON "T1"."Counter" = "T3"."lfdNr." (und natürlich auch in der einleitenden SELECT die Spalten T2.SummeA, T3.SummeE), dann kriege ich 196 (=4*7*7 wobei 4Zeilen KostenA, 7 Zeilen KostenE) Zeilen mit den beiden Summen-Spalten, die in jeder Zeile den richtigen GesamtSummenwert der Spalte "Kosten" beinhalten. Entferne ich die ON Bedingungen für T4, T5 dann Syntax-Fehler, leider nicht analysierbar, wie es in Eurem Handbuch steht.
Also ich experimentieren mit dem SQL Befehlen herum, erkenne aber noch keine Logik. Habe auch probiert gleich zu Beginn die Tabelle T1 durch 2 Spalten zu erweitern, um nach der Auswahl des Counters sofort die Summen zu bilden aber auch das endete in Syntax-Fehlern ohne Unterstützung des "Wo".
Bin sicher, dass Du sofort eine Lösung in Deinem Repertoire hast an der ich natürlich sehr interessiert bin.
Gruß
Frewer