我有一张表#rah,只包含两列 (客户ID和产品)
表值
product customer id
PD 100045592
PD 100030983
PD 210330909
PDRU 200067524
PDRM 210007421
有没有人知道我在SQL Server 2008中使用PIVOT函数写这个的最佳方法?
期望的输出:
Product Count
PD 3
PDRU 1
PDRM 1
感谢任何帮助。
答案 0 :(得分:3)
您不需要PIVOT功能。您可以使用聚合函数和GROUP BY:
轻松获得此结果select product, count(customer_id) Total
from yourtable
group by product;
见SQL Fiddle with Demo。这给出了一个结果:
| PRODUCT | TOTAL |
-------------------
| PD | 3 |
| PDRM | 1 |
| PDRU | 1 |
如果您希望将product
名称作为列,则可以使用PIVOT:
select PD, PDRU, PDRM
from yourtable
pivot
(
count(customer_id)
for product in(PD, PDRU, PDRM)
) piv;
见SQL Fiddle with Demo。枢轴给出结果:
| PD | PDRU | PDRM |
--------------------
| 3 | 1 | 1 |