2013-08-28 47 views
0

我有如下表:SQL表行 - 列转换

enter image description here

如何上表转变为以下结构?我尝试使用数据透视表,但无法让它工作。

enter image description here

+0

SQL仅仅是**查询语言** - 不是一个数据库产品。对于像这样的东西,我们真的需要知道你正在使用的具体数据库产品** --MySQL? Postgres的?甲骨文? IBM DB2? SQL Server?别的东西?请相应地更新您的标签 –

+0

我正在使用SQL Server。 –

回答

1

您必须查找SQL PIVOT

检查this fiddle

,代码:

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

如果你不知道事先列别那么你可以check this fiddle其动态生成列使用。

的代码是:

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) 
+0

邑,我试过使用枢轴,我coudnt得到它 –

+0

你能给一个解决方案吗? –

+0

@Vignesh请检查我的更新解决方案。 –