0

我有下表:

在此处输入图像描述

如何将上表转换为以下结构?我尝试使用数据透视表,但无法正常工作。

在此处输入图像描述

4

1 回答 1

1

您需要查找SQL PIVOT

检查这个小提琴

和代码:

SELECT    * 
FROM 
(
    SELECT    Prodname, 
              pcode, 
              Biiledamt
    FROM      Product
) p
PIVOT 
(
    SUM    (Biiledamt)
    FOR    Prodname IN ([Prod1],[Prod2],[Prod3],[Prod4])
)   AS pvt

如果您事先不知道这些列,那么您可以检查这个动态生成要使用的列的小提琴。

代码是:

DECLARE @cols AS VARCHAR(MAX),
        @query AS VARCHAR(MAX)

SET @cols = STUFF((SELECT distinct ',[' + Prodname +']'
            FROM Product c
            FOR XML PATH(''), TYPE
            ).value('.', 'VARCHAR(MAX)') 
        ,1,1,'')


SET @query = 
'    SELECT    * 
    FROM 
    (
        SELECT    Prodname, 
                  pcode, 
                  Biiledamt
        FROM      Product
    ) p
    PIVOT 
    (
        SUM    (Biiledamt)
        FOR    Prodname IN (' + @cols + ')
    )   AS pvt
'


EXEC(@query)
于 2013-08-28T09:43:55.727 回答