becks: T-SQL Abfrage

Hallo Zusammen,

folgendes: Ich habe Warenaus- und -eingänge WaWe im Lager und ich habe Sendungen an den Kunden s.

WaWe: Artikel, Menge, Wert
s: Artikel, Menge, Wert, Datum

Ich möchte jetzt gruppiert nach Artikel den Bestand abfragen und auch das letzte Sendungsdatum mit ausgeben.

WaWe.Artikel, SUM(WaWe.Menge), MAX(s.Datum)

Die Abfrage ansich ist kein Problem, nur das summieren / gruppieren ist problematisch, weil nicht unbedingt eine Sendung existiert und weil es mehrere Datensätze mit MAX(Datum) in Warenausgang geben kann.

Hat jemand eine Idee, so das ich korrekt Werte erhalte.

Lieben Gruß

  1. yo,

    Die Abfrage ansich ist kein Problem, nur das summieren / gruppieren ist problematisch, weil nicht unbedingt eine Sendung existiert und weil es mehrere Datensätze mit MAX(Datum) in Warenausgang geben kann.

    das ist eine frage deines daten-designs. es sollte eigentlich auch eine tabelle vorhanden sein, die nur die artikel beinhaltet und nicht die wareneingänge oder ausgänge. ist dies nicht der fall, hast du unabhängig von deiner abfrage ein grundsätzlich problem.

    wenn sie vorhanden ist, machst du einen OUTER JOIN der beiden tabellen und gruppierst über den artikel, bzw id der artikel-tabelle. dann hast du immer einen datensatz pro artikel, egal ob es schon warenverkehr gibt oder nicht. hast du NULL werte in der Summierungsspalte, kannst du eine entsprechende funktion benutzen, die NULL in 0 wandelt.

    das problem mit dem datum habe ich nicht ganz verstanden. wenn es mehrer max werte gibt, dann reicht dir die ausgabe nicht aus ? es spielt doch keine rolle, wieviele es davon gibt, wenn ich dich richtig verstanden habe.

    Gruß
    Ilja