Alle Monate anzeigen auch wenn SUM DBNULL

Putzmann

Benutzer
Beiträge
7
Moin zusammen,
ich bin ziemlich neu im Thema SQL und habe eine Windows Anwendung mit einer MS Access DB "geerbt" und soll diese nun MariaDB umstellen.
Teilweise werden sogar SQL Ergebnisse noch im DataTable per For Next Schleife verändert.
Ziemlich verrückt programmiert, das Ganze.
Das ändern des Syntax klappt eigentlich ganz gut, nur gelegentlich stimmen die Ergebnisse nicht und da mir die Erfahrung und das Wissen fehlt, möchte ich euch um Hilfe bitten.
Folgende Abfrage:
Code:
SELECT 
MONTH(tblABGANG.VerkDAT) AS monat,
IF(ISNULL(SUM(tblABGANG.Menge)),0,SUM(tblABGANG.Menge)) AS SuMenge,
IF(ISNULL(SUM(tblLIEFERUNG.EK * tblABGANG.Menge)),0,SUM(tblLIEFERUNG.EK * tblABGANG.Menge)) AS SuEK,
IF(ISNULL(SUM(tblLIEFERUNG.VK * tblABGANG.Menge)),0,SUM(tblLIEFERUNG.VK * tblABGANG.Menge)) AS SuVK 
FROM tblABGANG LEFT JOIN tblLIEFERUNG ON tblABGANG.IDNr = tblLIEFERUNG.IDNr 
WHERE tblABGANG.AbgabeArt = '1' AND YEAR (tblABGANG.VerkDAT) = '2020' 
GROUP BY MONTH (tblABGANG.VerkDAT) 
ORDER BY MONTH (tblABGANG.VerkDAT)
Liefert als Ergebnis
41394991xb.png

Das Ergebnis stimmt soweit.
Allerding würde ich gerne Wissen ob und wie es möglich ist, die fehlenden Monate 9 und 11 mit jeweils 0 in die Spalten SuMenge, SuEK und SuVK zu bekommen.

Danke euch
 
Werbung:
mit anderen Datenbanken könnte man sich via generate_series() eine passende Tabelle erstellen, die alle Monate eines Bereiches enthält, und da dann Dein Ergebniss dranjoinen. Leider habt ihr bei der Wahl eines Nachfolgesystems von Access da genau das OpenSource-DB-System gewählt, welches die meisten Bugs und wenigsten Features enthält ...
 
akretschmer hat Recht, eine Umstellung der DB neu ausgerechnet mit mySQL zu machen, ist nicht unbedingt das Klügste. Mal zur Probe einfach Deine Änderungen auf einer Postgres DB einspielen, noch hast Du nur eine minimale Differenz. Kostet vielleicht ne Stunde für einen groben Start.
Trotzdem ein Vorschlag, Dein Problem zu lösen. Erzeuge eine Tabelle mit den Werten 1-12 (Oder auch zusätzlich den Monatsnamen, was immer Du auch brauchst) und sorge per Contstraint dafür, das niemals jemand diese Werte erweiterte, ändert. Die Werte musst Du dann in Deine Abfrage rein joinen.
 
mit anderen Datenbanken könnte man sich via generate_series() eine passende Tabelle erstellen, die alle Monate eines Bereiches enthält, und da dann Dein Ergebniss dranjoinen. Leider habt ihr bei der Wahl eines Nachfolgesystems von Access da genau das OpenSource-DB-System gewählt, welches die meisten Bugs und wenigsten Features enthält ...
Okay, was wäre denn deiner Meinung nach eine Alternative zu MariaDB?
Wichtig wäre nur, das es eine entsprechende Anbindung/Connector für Visual Studio gibt.
 
Werbung:
Man liest "überall" das MariaDB und MySQL gleich sind.
Hat MySQL dann auch die meisten Bugs und wenigsten Features?

in Kurz formuliert: MySQL wurde von Oracle gekauft. Da Oracle bereits einen anderen Goldesel im Stall hat, wird das neue Kalb vermutlich nur wenig gefüttert. Daher haben einige MariaDB als freie Alternative zu MySQL geschaffen. Hat damit faktisch dieselben Probleme...
 
Zurück
Oben