2016-05-20 87 views
1

我的分類表中有以下數據。將表格格式數據轉換爲SQL Server中的列表格式

當我把選擇*從類別我得到這樣的數據。此表有超過10列

CategoryId CategoryName c3 c4 .....c10 
1   aaa 
2   bbb 
3   ccc 
... 
... 

我想顯示這樣的數據。我不知道如何爲此準備SQL。

CategoryId 1 
CategoryName aaa 
C3 
... 
... 
C10 
CategoryId 2 
CategoryName bbb 
C3 
... 
... 
C10 
CategoryId 3 
CategoryName ccc 
C3 
... 
... 
C10 

... 

請給我建議任何想法。

+1

名稱 「列表格式」 和 「列表格式」 對數據庫沒有意義。你所描述的,交換列和行,被稱爲pivoting。至少有一種方法是使用'PIVOT'和'UNPIVOT'命令 –

+0

我有超過10列我想用兩列轉換這些行。我不知道如何爲這 – StackUser

回答

1

可以實現它使用Cross Apply這樣的 -

DECLARE @OutItem TABLE 
(
    CategoryId INT, 
    CategoryName varchar(10), 
    c3 varchar(10) 
) 

INSERT INTO @OutItem 
    VALUES (1,'aaa', 'c31'), 
(2,'bbb', 'c32'), 
(3,'ccc', 'c33') 


SELECT ca.* from @OutItem 
CROSS APPLY (
    VALUES ('CategoryId', CAST(CategoryId AS VARCHAR)), 
     ('CategoryName', CategoryName), 
     ('C3', c3) 
     --, Add your 10 columns here same as above 
) ca (TabCol, TabVal) 

結果

TabCol  TabVal 
=================== 
CategoryId 1 
CategoryName aaa 
C3   c31 
CategoryId 2 
CategoryName bbb 
C3   c32 
+0

做unpivot非常感謝你krishnraj – StackUser

相關問題