我有一个临时表,其中有一列有四行。
Table
------
vaibhav
IBM
12
'T'
我需要临时表
Col1 Col2 Col3 Col4
------ ----- ----- ------
Vaibhav IBM 12 'T'
有没有人有任何想法?
答案 0 :(得分:3)
我相信你正在寻找Pivot条款,直接来自msdn ...
您可以使用PIVOT和UNPIVOT关系运算符将表值表达式更改为另一个表。 PIVOT通过将表达式中一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在最终输出中需要的任何剩余列值上执行聚合。 UNPIVOT通过将表值表达式的列旋转到列值来执行与PIVOT相反的操作。
请参阅msdn article了解更多信息。
答案 1 :(得分:0)
标准PIVOT语句的问题是您需要事先了解列值,以便在“FOR xxx IN('x','y','x'...)”语句中定义它们
为了解决这个问题,你需要做一些动态SQL并创建一个包含列的字符串。
这是一篇有趣的文章:
http://www.simple-talk.com/community/blogs/andras/archive/2007/09/14/37265.aspx
我使用这种技术构建了许多PIVOT查询,尽管无法优化动态SQL以及硬编码的存储过程,但它们运行良好。
如果需要,我可以发布一些示例代码。