2010-05-07 104 views
0

我有一个临时表,其中有一列有四行。使用SQL查询使行进入列

Table 
------ 
vaibhav 
IBM 
12 
'T' 

我需要一个临时表

Col1  Col2 Col3  Col4 
------ ----- ----- ------ 
Vaibhav IBM  12  'T' 

没有人有任何想法?

回答

3

我相信你正在寻找支点条款,直接从MSDN ...

您可以使用PIVOT和UNPIVOT关系运算符来改变一个表值表达式到另一个表。 PIVOT通过将表达式中的一列中的唯一值转换为输出中的多列来旋转表值表达式,并在最终输出中需要的任何剩余列值上执行聚合。通过将表值表达式的列转换为列值,UNPIVOT执行与PIVOT相反的操作。

查看msdn article了解更多信息。

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不能优化,以及那些难以存储过程编码,他们工作得很好。

如果需要我可以发布一些示例代码。