垂直& SQL Server 2005中的水平表

时间:2011-11-10 10:41:54

标签: sql-server-2005

请考虑有两个表BodyFile的情况,其中第一个表中的每个记录在第二个表中都有零个或多个相应记录:

BodyID | Body
-------------
1      | X
2      | Y

FileID | BodyID | File
------------------------
1      | 1      | A
2      | 1      | B
3      | 2      | C
4      | 2      | D
5      | 2      | E

当然,加入两个表并获得类似

的内容非常容易
BodyID | FileID | Body | File
-----------------------------
1      | 1      | X    | A
1      | 2      | X    | B
2      | 3      | Y    | C
2      | 4      | Y    | D
2      | 5      | Y    | E

但是,我希望能够将同一个表格转换为水平表格,例如

BodyID | Body | File1 | File2 | File3 | ...
-------------------------------------------
1      | X    | A     | B     | NULL  | ...
2      | Y    | C     | D     | E     | ...

当没有文件时,每个列都被NULL(或任何其他“有意义的”值)替换。问题是我既不能使用D-SQL也不能使用游标。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

每当您需要将行转换为列时,请使用pivot.you可以搜索msdn以获取数据。