2010-12-31 4 views
1

J'ai une table avec trois colonnes, que nous appellerons ID1, ID2 et Value.Problème de transformation/PIVOT conditionnel

données de l'échantillon:

ID ID1 Value 
1 1 0 
1 2 1 
1 3 1 
1 3 2 
1 4 0 
1 4 1 
1 5 0 
1 5 2 
2 1 2 

La valeur est limitée à 0, 1 ou 2.

Ce que je dois faire est pivot/transformer ces données en un nombre en colonnes de combien de fois chaque valeur possible apparaît groupée par ID, ID1. La sortie de ce qui précède doit être:

ID ID1 Val0 Val1 Val2 
1 1 1  0  0 
1 2 0  1  0 
1 3 0  1  1 
1 4 1  1  0 
1 5 1  0  1 
2 1 0  0  1 

J'utilise SQL Server 2008. Comment puis-je faire?

+0

Je suppose que la deuxième ligne du résultat devrait être '1 2 0 1 0'? Il n'y a qu'une seule ligne '1 2 1' dans les données source. –

+0

Vous avez raison. Je l'ai réparé. – IamIC

Répondre

3
SELECT ID, 
     ID1, 
     COUNT(CASE WHEN Value=0 THEN 1 END) AS Val0, 
     COUNT(CASE WHEN Value=1 THEN 1 END) AS Val1, 
     COUNT(CASE WHEN Value=2 THEN 1 END) AS Val2 
FROM your_table 
GROUP BY ID, 
      ID1 
+0

Bien joué, @Martin! Compteur Case. Intelligent. – IamIC