我正在尝试将行转置为列,但是没有找到任何好的答案。
这是我想要的示例:
输入表:
TABLE A
ID | NAME
1 | BOB
2 | JIM
3 | ROB
TABLE B
ID | CLUB
1 | 2
1 | 3
1 | 4
2 | 2
2 | 1
3 | 5
输出将是:
ID | CLUB1 | CLUB2 | CLUB3
1 | 2 | 3 | 4
2 | 2 | 1 |
3 | 5 | |
您需要枚举值以对其进行透视:
select id,
max(case when seqnum = 1 then club end) as club_1,
max(case when seqnum = 2 then club end) as club_2,
max(case when seqnum = 3 then club end) as club_3
from (select b.*,
row_number() over (partition by id order by club) as seqnum
from b
) b
group by id;
问题内容: 考虑下面的示例,其中有一个包含人员记录的 Person 表和一个包含链接到人员的可选属性的 PersonAttribute 表: Table: Person Table PersonAttribute 我将如何编写一个查询,使所有具有属性的人都像列一样返回?我需要的结果集是: 因此,从本质上讲,我需要编写一个查询,该查询将获取所有带有所有唯一属性键的人记录,这些键被转换为具有每个人记录
问题内容: 我的表包含以下列: 我想显示如下: 如您所见,我想将列与自定义列名成对显示。这对是列A和B,列C和D以及列C和D。 问题答案:
问题内容: 我有一个具有当前值和先前值的sql表。 我想比较它们,如果值有变化,请在下表中显示。 在SQL 2008中是否可以不循环每一列? 问题答案: 您可以使用取消透视数据: 请参阅带有演示的SQL Fiddle。 仅仅因为我喜欢使用 数据透视 功能,所以以下是同时使用 取消 数据透视 和 数据透视 功能来获取结果的版本: 参见带有演示的SQL Fiddle
问题内容: 我需要将列转换为行并获取其平均值。 例如,我有此表: 输出应为: 我该如何实现?感谢您的帮助。 问题答案: 如果您使用的是11G,则可以使用: 但是由于您不是,所以您可以伪造它。从本网站改编: 在这两种情况下,内部结构都将行转换为列。在10克中,您只需要自己做即可。在刚刚产生虚值的列表,这必须有足够的覆盖要转换为行(如果你真的有1000,你真的应该重新审视数据模型)的列数。这两个语句使
问题内容: 我有下表,该表为每个用户提供了多个电子邮件地址。 我需要将其展平为用户查询中的列。请根据创建日期为我提供“最新”的3个电子邮件地址。 问题答案: 使用从模块。
问题内容: 我有这种形式的查询返回值(查询返回超过50列)。 对于行值。我希望将这些详细信息转换为列并采用以下形状: 问题答案: 在纯 SQL中 ,它将需要大量编码,因为您将不得不手动放置 范围, 因为值和范围之间根本没有关系。如果存在关系,则可以使用 CASE 表达式并 动态 构建范围。 在 Oracle数据库11g第1版 及更高版本中,可以使用 UNPIVOT 上面,根据您的情况,您需要用现有