Roman78 1 Geschrieben 22. April 2014 Melden Teilen Geschrieben 22. April 2014 Ich bin dabei eine SQL abfrage zu erstellen die mir eine Übersicht geben soll welcher Artikel überhaupt nicht mehr da ist. Das Problem dabei ist das es in mehreren Lager vorkommt (c.a. 80). Die Tabelle besteht aus 2 Schlüssel (LagerNr und ArtNr) und eine der weiteren lautet bestand. Wenn ich jetzt eine abfrage mache mit „where bestand = '0'“ gibt er mir ja nur die vom jeweiligen Lager. Wie bekomme ich jetzt so hin dass er mir nur die anzeigt die auf allen Lager auf ‚0‘ steht? Das ganze muss dann später mit einer zweiten Tabelle abgeglichen werden worin nur Artikel stehen mit einem Feld ob diese freigeschaltet sind oder nicht. Das ganze geht darum um Artikel die nicht mehr da sind aus zu listen sodass diese nicht mehr bei Inventuren der entsprechenden Lager auftauchen. Zitieren Link zu diesem Kommentar
Pathomorph 1 Geschrieben 22. April 2014 Melden Teilen Geschrieben 22. April 2014 (bearbeitet) Hi ... where SUM(bestand) = 0 (und nach ArtNr gruppieren) bearbeitet 22. April 2014 von Pathomorph Zitieren Link zu diesem Kommentar
Roman78 1 Geschrieben 22. April 2014 Autor Melden Teilen Geschrieben 22. April 2014 Hmmm dann bekomme ich ein Fehler: SQL Server Database Error: Ein Aggregat darf nicht in der WHERE-Klausel auftreten - es sei denn, es befindet sich in einer Unterabfrage, die in einer HAVING-Klausel oder einer Auswahlliste enthalten ist, und die Spalte, die aggregiert wird, ist ein Außenverweis. Hier der Code select ARTNR, Bezeichnung from dep_bes where artnr < '40000000' and SUM(bestand) = 0 group by ARTNR Zitieren Link zu diesem Kommentar
Pathomorph 1 Geschrieben 22. April 2014 Melden Teilen Geschrieben 22. April 2014 select artnr, bezeichnung from dep_bes group by artnr, bezeichnung having artnr < '40000000' and SUM(bestand) = 0 Zitieren Link zu diesem Kommentar
Roman78 1 Geschrieben 22. April 2014 Autor Melden Teilen Geschrieben 22. April 2014 Ja, danke :D wieder ein neues Kommando gelernt. Da habe ich jetzt noch ein kleines Problem gefunden. Sum macht ja eine summe, wenn aber jetzt einer +1 hat und einer -1 ist das auch null (ja ich Weiß -1 dürfte keiner haben, ist aber so). Wie bekomme ich das jetzt raus? Zitieren Link zu diesem Kommentar
Pathomorph 1 Geschrieben 22. April 2014 Melden Teilen Geschrieben 22. April 2014 entweder vorher: update dep_bes set bestand=0 where bestand<0 oder in der "having"-Klausel noch Bestand>=0 reinbauen Zitieren Link zu diesem Kommentar
h-d.neuenfeldt 21 Geschrieben 22. April 2014 Melden Teilen Geschrieben 22. April 2014 Kann man an der Stelle nicht auch was mit der abs()-Funktionbauen ? Zitieren Link zu diesem Kommentar
Pathomorph 1 Geschrieben 22. April 2014 Melden Teilen Geschrieben 22. April 2014 Man kann viel machen. Voraussetzung ist aber immer eine saubere Datenbasis. Die negativen Lagerbestände sind aber unsinnig und führen zu falschen Ergebnissen. Wenn du z.B. für ArtNr 4711 in 5 Lagern einen Bestand von -1 hast, in einem 1 und Rest 0: Du willst eine Übersicht haben, welche Artikel nicht da sind.Welche Erkenntnis kann du aus DIESEM Ergebnis gewinnen?? In dem Beispiel liefert -SUM(bestand) das Ergebnis -4 -SUM(ABS(bestand)) --> 6 Das richtige Ergebnis ist jedoch 1.. Oder? Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.