samsan 0 Geschrieben 14. März 2019 Melden Teilen Geschrieben 14. März 2019 Hallo zusammen, ich habe eine Statistiktabelle aus einem ERP mit - vereinfacht - den Spalten Monat (im Format JJJJMM) / Artikelnr. / Umsatz. Ziel ist, über eine ODBC-Abfrage aus Excel auf einen View eine Tabelle auszugeben mit den Spalten Artikelnr. / Umsatz aktueller Monat / Umsatz Vorjahresmonat. Aktueller und Vorjahresmonat sollen in Excel als Parameter für die Abfrage festgelegt werden. Es sollen natürlich auch Artikel ausgegeben werden, die nur in einem der beiden Monate einen Umsatz haben. Ich habe zwei Views erstellt, einen für Daten aktueller Monat, einer für Daten Vormonat. Diese joine ich in einem dritten View. Das Problem ist aber, dass in der Statistiktabelle für Monate, in denen der Artikel keinen Umsatz hatte, auch kein Datensatz vorhanden ist. Frage ich in dem kombinierten View aktuellen und Vorjahresmonat mit AND ab, bekomme ich also nur Artikel, die in beiden Monaten einen Umsatz hatten. Frage ich mit OR ab, bekomme ich zwar Artikel, die nur in einem der beiden Monaten einen Umsatz hatten, Artikel die in beiden Monaten einen Umsatz haben, bekomme ich dann aber doppelt. Ich komme leider auf keine Lösung und hoffe, dass mir hier jemand weiterhelfen kann. Besten Dank! Stefan Zitieren Link zu diesem Kommentar
DerFrank 15 Geschrieben 15. März 2019 Melden Teilen Geschrieben 15. März 2019 (bearbeitet) Wie hast du die views miteinander verjoint? Denke du hast ein inner join verwendet und daher funzt es nicht. du musst die view Monat mit der view Vormonat mit left join verbinden. Bspw. Select M.Artikel, M.Monat, M.Umsatz, V.artikel, v.monat, v.umsatz from Monat m left join Vormonat v on m.artikel = v.artikel where m.monat is null glaube so sieht die sql Anweisung aus. Du kannst damit auch gleich im Select eine case Anweisung einbauen, die dann gleich den NULL Datensatz mit V.Monat überschreibt. Versuch es mal damit vg DerFrank bearbeitet 15. März 2019 von DerFrank Hinweis Zitieren Link zu diesem Kommentar
samsan 0 Geschrieben 15. März 2019 Autor Melden Teilen Geschrieben 15. März 2019 Hallo Frank, Danke Dir. Das Problem ist, dass ich keine NULL-Werte habe, sondern überhaupt keinen Datensatz, wenn kein Umsatz vorhanden. Habe da heute wieder länger rumgebastelt. Im Moment stehe ich an diesem Punkt in der kombinierten Abfrage: SELECT COAkt.PRODNR, COAkt.UMSAJ, COVj.UMSVJ, COAkt.AKTJ, COVj.VORJ FROM COAkt LEFT OUTER JOIN COVj ON COAkt.PRODNR = COVj.PRODNR WHERE (COAkt.AKTJ = '201901') AND (COVj.VORJ = '201801') OR (COAkt.AKTJ = '201901') AND (COVj.VORJ = 'Datensatz 201801 gibt es nicht') Wobei der rot markierte das Problem ist. Grüße Stefan Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 15. März 2019 Melden Teilen Geschrieben 15. März 2019 Die Schreibweise ist ein inner join. Probiere mal einen left join: https://www.w3schools.com/sql/sql_join_left.asp 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.