Hallo Zusammen,
ich finde die Beschreibung einer Abfrage immer schwierig, aber ich versuche es verständlich zu schreiben...
Ich habe eine Tabelle, in der Kundenbedarf mit Datum und verantwortlicher Mitarbeiter drinstehen. Es gibt auf viele Kundenbedarfe für ein ein Teil, die von unterschiedlichen Kunden und damit auch von unterschiedlichen Mitarbeiter bearbeitet werden.
Ich möchte eine Abfrage erstellen, in der ich alle Kundenbedarfe eines Artikels nach Kalenderwochen summiert darstellen kann. Dabei sollen nur die Bedarfe angezeigt werden, von Artikeln, für die der jeweilige Benutzer verantwortlich ist. Aber von diesen Artikeln sollen auch die Bedarfe anderer Kunden angezeigt werden.
Bei dieser Abfrage raucht der
SQL-Server leider ab, bzw. bringt nach langer Zeit einfach kein Ergebnis:
Delphi-Quellcode:
select 0 as Nr,
o.watenr as ArtikelNr,
sum(o.ltrest) as Menge ,
case when week(o.ltlite,3)<10 then concat(year(o.ltlite),'0',week(o.ltlite,3)) else concat(year(o.ltlite),week(o.ltlite,3)) end as KW,
o.tebez1 as ArtikelBez
from liefersituation o
where (o.ltlite >= current_date and week(o.ltlite,3)<week(current_date,3)+25 )
and o.watenr in (select a.watenr from liefersituation a where a.lpdivk='SSC'group by a.watenr)
group by o.watenr, kw
order by o.watenr, kw
Diese Abfrage bringt zwar nach 23 Sekunden ein Ergebnis, aber hier stimmen die Mengen nicht. Sie ist immer ein Vielfaches von der wirklichen Menge, sodass ich glaube, dass die Berechnung so oft durchgeführt, wie Anzahl einzelner Kundenbedarfe vorhanden sind...
Delphi-Quellcode:
select 0 as Nr,
a.watenr as Artikel,
sum(o.ltrest) as Menge ,
case when week(o.ltlite,3)<10 then concat(year(o.ltlite),'0',week(o.ltlite,3)) else concat(year(o.ltlite),week(o.ltlite,3)) end as KW,
o.tebez1 as ArtikelBez
from liefersituation o
cross join liefersituation a on o.watenr=a.watenr and a.lpdivk='SSC'
where (o.ltlite >= current_date and week(o.ltlite,3)<week(current_date,3)+25 )
group by o.watenr, kw
order by o.watenr, kw
Ich habe mal ein Bild vom Ergebnis der Abfrage hochgeladen. Die eingekreiste Menge ist um den Factor 10 zu hoch, die Mengen des nachfolgenden Artikel sogar um den Faktor 20...
Hat jemand eine Idee für mich, wie ich das lösen kann?
Vielen Dank
Patrick