将行转换为列

时间:2013-10-23 23:11:55

标签: sql sql-server-2008 pivot transpose unpivot

我已经阅读了无数的线程,仍然不清楚

表1 :这就是我所拥有的

Key Id Field1   Field2   
1   20   123     dkdf 
2   20   342     fe2f
3   20   894     lol3
4   20   093     09ps
5   20   999     393d
6   20   283     amls
7   20   kol     290f

表2 :这就是我想要的

Id   Field11 Field12 Field13 Field14 Field15 Field16 Field17 Field21 Field22 Field23 .....
20     123     342    894      093     999     283     kol     dkdf   fe2f     lol3  .....

请告诉我你将如何做到这一点。

谢谢

1 个答案:

答案 0 :(得分:1)

如果要转动上表,可以使用以下代码: -

    select id, max(case when field1 = '123'  then '123' end) field11,
max(case when field1 = '342'  then '342' end) field12,
max(case when field1 = '894'  then '342' end) field13
from try group by id;

请参阅http://sqlfiddle.com/#!4/6ef0d/5

中的测试查询

我以3列为例。您可以对所有列重复相同的操作。如果您想使用Oracle pivot功能,那么您的查询中应该有聚合功能要求。