SQL-query pivot eine Spalte mit FALL WENN
Ich habe die folgende Tabelle:
Bank:
name val amount
John 1 2000
Peter 1 1999
Peter 2 1854
John 2 1888
Bin ich zu schreiben versucht, eine SQL-Abfrage zu geben das folgende Ergebnis:
name amountVal1 amountVal2
John 2000 1888
Peter 1999 1854
Bisher habe ich dieses:
SELECT name,
CASE WHEN val = 1 THEN amount ELSE 0 END AS amountVal1,
CASE WHEN val = 2 THEN amount ELSE 0 END AS amountVal2
FROM bank
Jedoch, es gibt den leicht falschen Ergebnis:
name amountVal1 amountVal2
John 2000 0
Peter 1999 0
John 0 1888
Peter 0 1854
Wie kann ich ändern, meine Abfrage zu geben, die richtige Präsentation?
Dank
InformationsquelleAutor Roger | 2011-05-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
group by name
würde nicht wissen, was zu tun mit den zahlen. In diesem Fall müssen wir sagen, Sie die SUMME! Danke für die HilfeInformationsquelleAutor nos
Sieht aus wie Sie benötigen, um join der Tabelle auf sich selbst. Versuchen Sie dies:
Dies wird nicht erstellen Sie eine temporäre Tabelle. In einigen Fällen kann es sogar schneller sein als die
GROUP BY - CASE
Ansatz.Aber das wird sich zeigen unterschiedliche Ergebnisse, wenn es Personen gibt, die mit Zeilen, die nur für
val=1
oderval=2
. Oder mit mehr als einer Zeile mit dem gleichen Wert.InformationsquelleAutor Brian Willis