Anmelden

View Full Version : Query distinct



Seiten : 1 [2]

Fuerchau
22-10-09, 07:55
Du kannst aber auch mit CTE arbeiten:

with
ZLager as
(select Artikel, sum(Menge)
from ArtBest group by Artikel)
select ...
from File A
left join ZLager B on A.Artikel = B.Artikel

KingofKning
22-10-09, 08:12
Hallo,

danke für die Hinweise, ich werde jetzt mal versuchen das gesagte umzusetzen.

GG

KingofKning
22-10-09, 11:58
Du kannst aber auch mit CTE arbeiten:

with
ZLager as
(select Artikel, sum(Menge)
from ArtBest group by Artikel)
select ...
from File A
left join ZLager B on A.Artikel = B.Artikel

Hallo fuerchau,

mein sql sieht jetzt so aus:

with zlager as (select lgfa, sum(lglfbs) from lag01pf)
select akanr from ako01pf inner join abw01pf on akfa = bwfa
and akanr = bwanr inner join tst01pf on akfa = tefa and
bwtenr = tetenr left join zlager on lgfa = akfa and lgtenr = bwtenr

Leider beschwert er sich
Spalte LGFA oder Ausdruck in SELECT-Liste nicht gültig.

Das Feld ist aber definitiv drin.

Die andere Lösung hatte ich auch mal probiert, aber trotzdem ich distinct gesagt habe, hat er mir sobald ich die Lagerdatei am Wickel hatte immer 2 Sätze angezeigt und nicht nur einen.

SELECT DISTINCT AKO01PF.AKANR, AKO01PF.AKKTO, AKO01PF.AKNAM1,
AKO01PF.AKKA02, AKO01PF.AKKA14, AKO01PF.AKSA06, AKO01PF.AKKDT2,
AKO01PF.AKKDT3, AKO01PF.AKKDT8, ABW01PF.BWTENR, TST01PF.TE##31,
TST01PF.TE##33, TST01PF.TE##32, ABW01PF.BWSMEN, ABW01PF.BWKZ01,
ABW01PF.BWKZ11, LAG01PF.LGMBST, LAG01PF.LGLFBS akanr FROM
ako01pf inner join abw01pf on akfa = bwfa and akanr =
bwanr inner join tst01pf on akfa = tefa and bwtenr = tetenr inner
join lag01pf on lgfa = bwfa and lgtenr = bwtenr WHERE
AKO01PF.AKKDJ1 = 1 and akfa = 1 and akanr = 49099

führt zu
SA06 KDT2 KDT3 KDT8 TENR ##31 ##33 ##32 Stückmenge BWKZ01 BWKZ11 MBST LFBS
VK-L/ Auft. WuLi. WuLi. TeileNr. 6.St. 6.St. 6.St. Mindest laufender
Genehm Datum Datum b.Dat Datum Datum Datum Bestand Bestand
300 9.09.14 9.10.12 9.10.12 30004 900 999 999 22,00 4493,00-
300 9.09.14 9.10.12 9.10.12 30004 900 999 999 22,00 233,00-

Wobei ich halte nur die erste Zeile erwartet hätte.

Gruß
Gregor

Fuerchau
22-10-09, 12:24
with zlager as (select lgfa, lgtenr, sum(lglfbs) from lag01pf group by lgfa, lgtenr)
select akanr from ako01pf inner join abw01pf on akfa = bwfa
and akanr = bwanr inner join tst01pf on akfa = tefa and
bwtenr = tetenr left join zlager on lgfa = akfa and lgtenr = bwtenr

Bei Aggregaten ist natürlich auch Group By erforderlich und du mußt natürlich auch die Felder deiner Join-Beziehung mit aufnehmen.

KingofKning
22-10-09, 13:33
Hallo,
das Ergebnis ist interessant, jetzt bekomme ich die datensätze 3 statt 2 mal.

with zlager as (select lgfa, lgtenr, sum(lglfbs) from lag01pf
group by lgfa, lgtenr)
SELECT AKO01PF.AKANR, AKO01PF.AKKTO, AKO01PF.AKNAM1,
AKO01PF.AKKA02, AKO01PF.AKKA14, AKO01PF.AKSA06, AKO01PF.AKKDT2,
AKO01PF.AKKDT3, AKO01PF.AKKDT8, ABW01PF.BWTENR, TST01PF.TE##31,
TST01PF.TE##33, TST01PF.TE##32, ABW01PF.BWSMEN, ABW01PF.BWKZ01,
ABW01PF.BWKZ11 FROM
ako01pf inner join abw01pf on akfa = bwfa and akanr =
bwanr inner join tst01pf on akfa = tefa and bwtenr = tetenr left
join zlager on lgfa = bwfa and lgtenr = bwtenr WHERE
AKO01PF.AKKDJ1 = 1 and akfa = 1 and akanr = 49099
SELECT-Anweisung vollständig verarbeitet.

SA06 KDT2 KDT3 KDT8 TENR ##31 ##33 ##32 Stückmenge BWKZ01 BWKZ11
VK-L/ Auft. WuLi. WuLi. TeileNr. 6.St. 6.St. 6.St.
Genehm Datum Datum b.Dat Datum Datum Datum
300 9.09.14 9.10.12 9.10.12 237526 888 15 50 4320,00
300 9.09.14 9.10.12 9.10.12 237526 888 15 50 4320,00
300 9.09.14 9.10.12 9.10.12 237526 888 15 50 4320,00

Mal abgesehen davon das dann die F4 Funktion nicht mehr möglich ist, frage ich mich gibt es da noch einen besseren Editor der das einfach einfügen erlaubt?

Gruß
Gregor

Fuerchau
22-10-09, 13:44
Das liegt aber an deinem Select der Einzeldaten.
Ggf. solltst du den auch summieren und gruppieren.

Mach doch erst mal eine Abfrage deiner Einzelsätze ohne Lager damit du hier die eindeutigen hast (wobei du hier ja den distinct durchaus nehmen kannst) bevor du mit ZLager verbindest.

Ggf. musst du ZLager mit "having sum(lglbsf) > 0" ergänzen und einen Inner Join verwenden, wenn du nur die Teile MIT Bestand haben willst.

Einen Editor für CTE's gibts leider nicht.

KingofKning
22-10-09, 19:08
Hallo, wen ich das dämliche Lager außen vor lasse, habe uch ja auch nur einen Datensatz. Erst wenn das Lager ins Spiel kommt gibt es halt 2 bzw. 3 Sätze (Warum 3 erschließt sich mir nicht). Ich verstehe auch nicht warum die Variante mit distinct nicht funktioniert. Gruß Gregor

KingofKning
23-10-09, 10:15
Hallo Fuerchau,

danke für Deine Hilfe, nachdem ich mal ne Nacht drüber geschlafen habe, habe ich das Teil jetzt richtig am Rennen und auch eine View daraus machen können.

Mal wieder eine Menge gelernt.

Gruß
Gregor

PS. Dank natürlich auch an Brigitta & UFK