SQL Server帮助 - PIVOT

时间:2013-06-10 15:15:19

标签: sql sql-server sql-server-2008

我有一张表#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

感谢任何帮助。

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 |