2013-06-10 2 views
0

J'ai un #rah de table qui ne contient que deux colonnes (id client et produit)aide SQL Server - PIVOT

Tableau des valeurs

product  customer id 
PD  100045592 
PD  100030983 
PD  210330909 
PDRU   200067524 
PDRM   210007421 

Quelqu'un sait-il la meilleure façon que je peux utiliser le PIVOT fonction dans SQL Server 2008 pour écrire cela?

sortie souhaitée:

Product Count 
PD  3 
PDRU  1 
PDRM  1 

Toute aide est appréciée.

Répondre

3

Vous n'avez pas besoin de la fonction PIVOT pour cela. Vous pouvez facilement obtenir ce résultat en utilisant une fonction d'agrégation et GROUP BY:

select product, count(customer_id) Total 
from yourtable 
group by product; 

Voir SQL Fiddle with Demo. Cela donne un résultat:

| PRODUCT | TOTAL | 
------------------- 
|  PD |  3 | 
| PDRM |  1 | 
| PDRU |  1 | 

Si vous vouliez les product noms que les colonnes, vous pouvez ensuite utiliser PIVOT:

select PD, PDRU, PDRM 
from yourtable 
pivot 
(
    count(customer_id) 
    for product in(PD, PDRU, PDRM) 
) piv; 

Voir SQL Fiddle with Demo. Le pivot donne un résultat:

| PD | PDRU | PDRM | 
-------------------- 
| 3 | 1 | 1 | 
+0

Est-ce que PIVOT serait un bon usage s'il y avait 3 colonnes dans le tableau? – user130045

+0

@ShawnRahmani La fonction PIVOT est utilisée pour convertir les données des lignes en colonnes. Donc, si vous vouliez que les noms de produits soient des en-têtes de colonne, alors vous utiliseriez PIVOT - voir cette démo - http://www.sqlfiddle.com/#! 3/3dd261/2 – Taryn

+0

merci pour la clarification - apprécié! – user130045