将行转换为列[关闭]

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 的不同列中。

以上是关于将行转换为列[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将行数据转换为列

pyspark 将行转换为列

不能从子查询将行转换为列

将行转换为列

根据条件将行转换为列

使用R将行转换为列,将列转换为行