加入收藏 | 设为首页 | 会员中心 | 我要投稿 天瑞地安资讯网_保定站长网 (https://www.52baoding.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 根据ID列将行转换为列

发布时间:2021-01-08 07:31:33 所属栏目:MsSql教程 来源:网络整理
导读:我目前正在运行SQL Server 2008并尝试获取以下子查询数据: ID | Field Name | Field Selection1 | Rating 1 | Good1 | Rating 2 | Good1 | Rating 3 | Bad2 | Rating 1 | OK 根据ID列分组为一行: ID | Rating 1 | Rating 2 | Rating 31 | Good | Good | Bad

我目前正在运行SQL Server 2008并尝试获取以下子查询数据:

ID | Field Name | Field Selection
1  |  Rating 1  |      Good
1  |  Rating 2  |      Good
1  |  Rating 3  |      Bad
2  |  Rating 1  |      OK

根据ID列分组为一行:

ID | Rating 1 | Rating 2 | Rating 3
1  |    Good  |    Good  |   Bad
2  |     OK   |    NULL  |   NULL

这可能吗?提前致谢!

干杯,

解决方法

您可以使用SQL Server pivot子句:
select
    p.*
from Table1
pivot(
    max([Field Selection])
    for [Field Name] in ([Rating 1],[Rating 2],[Rating 3])
) as p

或者你可以手动转动:

select
    ID,max(case when [Field Name] = 'Rating 1' then [Field Selection] end) as [Rating 1],max(case when [Field Name] = 'Rating 2' then [Field Selection] end) as [Rating 2],max(case when [Field Name] = 'Rating 3' then [Field Selection] end) as [Rating 3]
from Table1
group by ID

sql fiddle demo

(编辑:天瑞地安资讯网_保定站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读