微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我目前正在运行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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐