2016-07-22 16 views
0

Ich habe eine Tabelle, die Transaktionen zwischen einem Käufer und einem Lieferanten speichert, Transaktionen werden durch einen "Doctype" kategorisiert, der Gutschrift oder Rechnung angibt. Ich versuche, eine Ansicht zu erstellen, die eine ähnliche Ansicht der gleichen Transaktionen zeigt.CASE-Problem mit MYSQL

Wenn ich diese Abfrage ausführen, sehe ich ein Ergebnis für die erste CASE-Anweisung, aber der Rest gibt Nullwerte zurück. Gibt es einen besseren Weg, dies zu tun?

Mein Ziel ist es, dies als eine Ansicht zu haben, aber ich kann nicht einmal die Abfrage zu zeigen, was ich will. Ich habe auch versucht, die unten als eine schreckliche hack aber es funktioniert nicht einmal

SELECT 
(sum(docvalue) 
    FROM transactions where doctype =1) as invoices, 
(sum(docvalue) 
    FROM transactions where doctype =2) as creditnotes, 
(sum(docvalue) 
    FROM transactions where doctype =3) as journals, 
(sum(docvalue) 
    FROM transactions where doctype =4) as payments 
from transactions 

Ich würde meine Haare reißen, aber ich bin Glatze!

+1

Es gibt zwei Formen des CASE-Ausdrucks. "**" FALL WENN Bedingung DANN ... "**" und "**" CASE Ausdruck WENN Wert DANN ... '**". – spencer7593

Antwort

1

Die Syntax für CASE ist falsch. Hier ist eine modifizierte Version:

SELECT 
SUM(CASE doctype WHEN 1 THEN docvalue END) AS Invoice, 
SUM(CASE doctype WHEN 2 THEN docvalue END) AS CreditNote, 
SUM(CASE doctype WHEN 3 THEN docvalue END) AS JournalEntry, 
SUM(CASE doctype WHEN 4 THEN docvalue END) AS Payment 
FROM transactions 
group by buyer 
+0

Danke, ich bin entsetzt darüber, wie offensichtlich das war! – Daniel

+0

Hätten Sie eine vorgeschlagene Methode zur Berechnung der Werte als "totale" Spalte? – Daniel