将行转换为列[关闭]
Posted
技术标签:
【中文标题】将行转换为列[关闭]【英文标题】:Transforming rows into columns [closed] 【发布时间】:2013-10-23 23:11:55 【问题描述】:我已经阅读了无数关于枢轴的帖子,但仍然不清楚
Table1:这就是我所拥有的
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
Table2:这就是我想要的
Id Field11 Field12 Field13 Field14 Field15 Field16 Field17 Field21 Field22 Field23 .....
20 123 342 894 093 999 283 kol dkdf fe2f lol3 .....
请告诉我你将如何做。
谢谢
【问题讨论】:
每个Id
的行数是否相同?
不,表 1 中每个 id 的行数可以在 1-22 之间变化。另一方面,第二个表中的列是固定的,等于 22。我使用的是 SQL Server 2008
我不相信你能像纯粹的SQL query
那样做。您将需要动态的T-SQL
解决方案,而且网上有很多。
【参考方案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 数据透视函数,那么您应该在查询中有聚合函数要求。
【讨论】:
我不能对任何列使用硬编码值。我只需要在一列(所有行)中获取数据,并将每一行放在第二个表中给定 ID 的不同列中。以上是关于将行转换为列[关闭]的主要内容,如果未能解决你的问题,请参考以下文章