Sql将数据从多列转换为一行

时间:2014-02-26 16:57:24

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

我有一张桌子

enter image description here

我希望将每个客户编号转换为一行,如下所示:

enter image description here

有人能指出我到了正确的地方,例如我可以做类似的事情。

1 个答案:

答案 0 :(得分:1)

您需要使用PIVOT。像下面这样的查询应该会有所帮助。

SELECT CustomerNumber, 
    CASE WHEN [1] > 0 THEN 'Y' ELSE 'N' END [Sony],
    CASE WHEN [2] > 0 THEN 'Y' ELSE 'N' END [LG],
    CASE WHEN [3] > 0 THEN 'Y' ELSE 'N' END [Samsung]
FROM
(SELECT Product1, CustomerNumber
    FROM Table) AS SourceTable
PIVOT
(
    COUNT(Product1)
    FOR Product1 IN ([1], [2], [3])
) AS PivotTable;