2013-08-28 50 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請檢查我的更新解決方案。 –