KingofKning
26-05-14, 09:49
... das mit der Auslagerung von Teilabfragen in eine UDF ist frei nach Fred Feuerstein Dummfug von der Dummfugigsten Sorte, damit schickt man jede Query Engine in den tiefsten Wald.
Wenn es denn die Summe nicht tut, kann man das auch in subselects auflösen.
In etwa so:
select knd
, (select ist from planz p2 where p1.knd = p2.knd and p2.monat = 201301)
, (select ist from planz p2 where p1.knd = p2.knd and p2.monat = 201302)
, (select ist from planz p2 where p1.knd = p2.knd and p2.monat = 201303)
, (select ist from planz p2 where p1.knd = p2.knd and p2.monat = 201304)
, (select ist from planz p2 where p1.knd = p2.knd and p2.monat = 201305)
...
, (select ist from planz p2 where p1.knd = p2.knd and p2.monat = 201404)
from planz p1
geht sicher noch eleganter, indem man die festen Monate rausnimmt, aber für einen ertsen Test, ob das brummt, reicht das sicherlich aus. (Selbstredend braucht man dann einen Index über Kunde und Monat).
wenn Du dann die leeren noch raus und das ganze in einem string haben willst, packst Du die Stringeritis noch drumherum.
D*B
Hallo, ich wollte das heute mal umsetzen, bekomme aber einen:
Unterbrechungspunkt unüberwachter Nachrichten anzeigen
Anweisung/Instruktion . . . . . . . . . : /0533
Programm . . . . . . . . . . . . . . . : QDBGETM
Rekursionsebene . . . . . . . . . . . . : 1
Funktionsfehler X'1716' in Maschineninstruktion. Interne Speicherauszugs-ID
zurück.
Das Statement lautet:
Aktuelle Verbindung besteht zur relationalen Datenbank S65FFEB1.
select knd
, (select ist from planz p2 where p1.adkto = p2.knd and p2.monat =
201301)
, (select ist from planz p2 where p1.adkto = p2.knd and p2.monat =
201302)
, (select ist from planz p2 where p1.adkto = p2.knd and p2.monat =
201303)
from planz p2, adr01pf p1
Im Dump kann ich nichts erkennen.
SPEICHERAUSZUG FÜR NICHT-ÜBERWACHTE DURCHBRUCHNACHRICHT
.NACHRICHTEN-ID MCH3203
.NACHRICHTENDATEI- QCPFMSG BIBLIOTHEK- *LIBL
.WERTIGKEIT- 60
.NACHRICHTENART- 0F
.SENDE-
..PROGRAMM- #dbreseq
BIBLIOTHEK-
..INSTRUKTION- 001D40
.EMPFANGS-
..PROGRAMM- QDBGETM BIBLIOTHEK- QSYS
..INSTRUKTION- 0533
.NACHRICHT-
Funktionsfehler X'1716' in Maschineninstruktion. Interne Speicherauszugs-ID .
.NACHRICHTENDATEN
000000 99D4A028 DCD1F000 1716 *rMµ }J0 *
.NR. NACHRICHTENDATENFELD 01
000000 F1F2F6F0 F5F1F4F1 F0F4F2F5 F2 *1260514104252 *
Was mache ich falsch?
GG
BTW. Mit IE sieht der Text so aus wie ich ihn geschrieben habe.
Wenn es denn die Summe nicht tut, kann man das auch in subselects auflösen.
In etwa so:
select knd
, (select ist from planz p2 where p1.knd = p2.knd and p2.monat = 201301)
, (select ist from planz p2 where p1.knd = p2.knd and p2.monat = 201302)
, (select ist from planz p2 where p1.knd = p2.knd and p2.monat = 201303)
, (select ist from planz p2 where p1.knd = p2.knd and p2.monat = 201304)
, (select ist from planz p2 where p1.knd = p2.knd and p2.monat = 201305)
...
, (select ist from planz p2 where p1.knd = p2.knd and p2.monat = 201404)
from planz p1
geht sicher noch eleganter, indem man die festen Monate rausnimmt, aber für einen ertsen Test, ob das brummt, reicht das sicherlich aus. (Selbstredend braucht man dann einen Index über Kunde und Monat).
wenn Du dann die leeren noch raus und das ganze in einem string haben willst, packst Du die Stringeritis noch drumherum.
D*B
Hallo, ich wollte das heute mal umsetzen, bekomme aber einen:
Unterbrechungspunkt unüberwachter Nachrichten anzeigen
Anweisung/Instruktion . . . . . . . . . : /0533
Programm . . . . . . . . . . . . . . . : QDBGETM
Rekursionsebene . . . . . . . . . . . . : 1
Funktionsfehler X'1716' in Maschineninstruktion. Interne Speicherauszugs-ID
zurück.
Das Statement lautet:
Aktuelle Verbindung besteht zur relationalen Datenbank S65FFEB1.
select knd
, (select ist from planz p2 where p1.adkto = p2.knd and p2.monat =
201301)
, (select ist from planz p2 where p1.adkto = p2.knd and p2.monat =
201302)
, (select ist from planz p2 where p1.adkto = p2.knd and p2.monat =
201303)
from planz p2, adr01pf p1
Im Dump kann ich nichts erkennen.
SPEICHERAUSZUG FÜR NICHT-ÜBERWACHTE DURCHBRUCHNACHRICHT
.NACHRICHTEN-ID MCH3203
.NACHRICHTENDATEI- QCPFMSG BIBLIOTHEK- *LIBL
.WERTIGKEIT- 60
.NACHRICHTENART- 0F
.SENDE-
..PROGRAMM- #dbreseq
BIBLIOTHEK-
..INSTRUKTION- 001D40
.EMPFANGS-
..PROGRAMM- QDBGETM BIBLIOTHEK- QSYS
..INSTRUKTION- 0533
.NACHRICHT-
Funktionsfehler X'1716' in Maschineninstruktion. Interne Speicherauszugs-ID .
.NACHRICHTENDATEN
000000 99D4A028 DCD1F000 1716 *rMµ }J0 *
.NR. NACHRICHTENDATENFELD 01
000000 F1F2F6F0 F5F1F4F1 F0F4F2F5 F2 *1260514104252 *
Was mache ich falsch?
GG
BTW. Mit IE sieht der Text so aus wie ich ihn geschrieben habe.