2009-04-13 8 views
0

je le tableau ci-dessous avec des données:Convertir les données dans une table à une autre vue

tag dt   value 
1  2009/03/01 10.2 
2  2009/03/01 12 
3  2009/03/01 120 
.... 
1  2009/03/02 13.2 
2  2009/03/02 9 
3  2009/03/02 23 
.... 

En fait, pour un groupe de balises, il y a des valeurs le long de la date (1er mars, 2, ...) . Je voudrais avoir des données dans une autre vue comme celui-ci:

dt    tag(1) tag(2) tag(3) 
2009/03/01  10.2  12  120 
2009/03/02  13.2  9  23 
.... 

J'ai essayé d'utiliser l'instruction SQL suivante pour obtenir uniquement l'(1) » valeur

SELECT dt, SUM(value) [tag(1)] FROM myTable 
GROUP BY dt, tagid 
HAVING tagid = 1 

comment puis-je obtenir tous les tags (1), tag (2) et tag (3) dans une colonne par date en utilisant TSQL?

Par la façon dont j'ai Microsoft SQL Server 2005.

Répondre

3
SELECT dt, 
SUM(case when tag=1 then value else 0 end) as tag1, 
SUM(case when tag=2 then value else 0 end) as tag2, 
SUM(case when tag=3 then value else 0 end) as tag3 
FROM myTable 
GROUP BY dt 
+0

belle avec la déclaration de cas! –

Questions connexes