SQL将列转换为行

SQL将列转换为行,sql,sql-server,tsql,pivot,unpivot,Sql,Sql Server,Tsql,Pivot,Unpivot,我读了很多关于SQL数据透视和UNPIVOT的书,但我不知道如何解决我目前遇到的问题 基本上,这是我的数据集 ItemNumber | Category 1 | Category 2 | Category 3 00001 Books Children Beginner 00002 Games Adults Advanced 如何旋转此表以获得此结果 ItemNumber | 00001 |

我读了很多关于SQL数据透视和UNPIVOT的书,但我不知道如何解决我目前遇到的问题

基本上,这是我的数据集

ItemNumber | Category 1 | Category 2 | Category 3
00001           Books      Children      Beginner
00002           Games      Adults        Advanced
如何旋转此表以获得此结果

ItemNumber  |   00001       |    00002
Category 1     Books            Games   
Category 2     Children         Adults
Category 3     Beginner        Advanced
我读过关于取消激励的文章,但在我的案例中,似乎取消激励不起作用

非常感谢您的帮助。

您可以用这个

DECLARE @T TABLE ( ItemNumber VARCHAR(10), [Category 1] VARCHAR(10), [Category 2] VARCHAR(10), [Category 3] VARCHAR(10))
INSERT INTO @T VALUES
('00001','Books','Children','Beginner'),
('00002','Games','Adults','Advanced')

SELECT Col ItemNumber,  [00001], [00002] FROM @T 
    UNPIVOT( Val FOR Col IN ([Category 1],[Category 2],[Category 3])) UNPVT
    PIVOT (MAX(Val) FOR ItemNumber IN ([00001],[00002])) PVT
结果:

ItemNumber               00001      00002
------------------------ ---------- ----------
Category 1               Books      Games
Category 2               Children   Adults
Category 3               Beginner   Advanced
可能重复的