Meerdere kolomen met CASE

Status
Niet open voor verdere reacties.

JRie

Nieuwe gebruiker
Lid geworden
12 apr 2013
Berichten
2
Ik heb een tabel die oa de volgende velden bevat, dag, maand, jaar en levering. Van deze tabel wil ik per dag de waarde van 2013 en 2014 naast elkaar hebben staan. In tbl_EParameter.ZMaand staat de maand waarvoor ik de warde wil zien.

Hiervoor heb ik de volgende query:
SELECT Dag as Dag, CASE Jaar WHEN 2013 THEN Levering END AS '2013', CASE Jaar WHEN 2014 THEN Levering END AS '2014' FROM tbl_Levering INNER JOIN tbl_EParameter ON (Maand = tbl_EParameter.ZMaand) ORDER BY Dag

De uitkomst gaat goed, echter ik krijg twee regels voor een dag, één voor 2013 en één voor 2014

Als ik deze uitvoer op de tabel dan krijg ik per maand wel één record:
SELECT Maand as Maand, SUM(CASE Jaar WHEN 2013 THEN Levering END) AS '2013', SUM(CASE Jaar WHEN 2014 THEN Levering END) AS '2014' FROM tbl_Levering Group BY Maand

Als ik een group by doe op Dag, dan zie ik alleen 2013 waarden. Wat doe ik niet goed.
 
Als ik het zo zie ben je met de tweede versie al een heel eind op weg. Als je group by aanpast naar dag moet je dat ook nog bij de select doen. En als je dan de parameter toevoegt uit de eerste query krijg je dit:

[sql]SELECT Dag as Dag
, SUM(CASE Jaar WHEN 2013 THEN Levering END) AS '2013'
, SUM(CASE Jaar WHEN 2014 THEN Levering END) AS '2014'
FROM tbl_Levering
INNER JOIN tbl_EParameter
ON (Maand = tbl_EParameter.ZMaand)
GROUP BY Dag
ORDER BY Dag[/sql]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan