2017-06-07 3 views
2

Meine Frage ist ...MySQL-Abfrage zeigen Ergebnisse

SELECT 
    tbl1.FeeName, 
    SUM(tbl1.FeeAmount) AS TotAmt 
FROM 
    tbl1 
WHERE 
    tbl1.DateTaken BETWEEN '2017-06-02' AND '2017-06-06' 
GROUP BY 
    tbl1.FeeId 

Der Ausgang ist ...

Fee

Die Tabelle andere Gebühren hat, die nicht genommen (Transaktion) zwischen dem werden über Daten zeigen daher nicht im query Ergebnis.

Ich möchte diese FeeNames zeigen und der Wert sollte sein. Genau wie unten (Die gelb gefärbten Ergebnisse).

Fee1

Was soll ich tun?

+0

haben Sie eine separate „Gebühren“ Tabelle (als wäre geeignet für eine normalisierte Datenbank). Ich denke, wenn Sie sich dem anschließen würden, könnten Sie alle Gebühren einfordern, sogar die Null. Möglicherweise muss ein linker Join sein. Habe keinen Zugang zu einem DBMS, um das jetzt zu testen. – ADyson

+0

Für das nächste Mal, siehe: [Warum sollte ich ein MCVE für das, was mir scheint, eine sehr einfache SQL-Abfrage?] (Https://meta.stackoverflow.com/questions/333952/why-should-i-provide -an-mcve-für-was-scheint-mir-eine-sehr-einfache-sql-Abfrage) – Strawberry

+0

@Strawberry. Was ist das ? Dein hochgedachter Kommentar ist wie ein 'Tangent' für meinen ** Kleinen Kopf **. – Raj

Antwort

6

Try this: diese nur Summenoperationen von Gebühren durchführen, die in bestimmten Zeitraum sind, Rest Gebühren dies 0 gesetzt wird

SELECT 
tbl1.FeeName, 
SUM(CASE WHEN tbl1.DateTaken BETWEEN '2017-06-02' AND '2017-06-06' 
     THEN tbl1.FeeAmount 
     ELSE 0 
    END) AS TotAmt 
FROM tbl1 
GROUP BY tbl1.FeeId 
+0

Danke JaydipJ. Es klappt. Danke noch einmal. – Raj

Verwandte Themen