sql - 基于行级别的多列动态透视 Oracle 和 SQL Server
问题描述
我有如下数据:
我正试图把它变成这个形状:
我已经看过这个解决方案Multi Column Pivot SQL Server,但它使用硬编码值,这不是我的情况,因此我认为使用动态数据透视会更安全。任何人都可以帮忙吗?
解决方案
您可以使用条件聚合:
select id_card_no,
max(case when city_rank = 1 then city end) as city_1,
max(case when city_rank = 1 then visitratio end) as visitratio_1,
max(case when city_rank = 2 then city end) as city_2,
max(case when city_rank = 2 then visitratio end) as visitratio_2
from t
group by id_card_no;
这是标准 SQL,应该适用于任何数据库。
推荐阅读
- python-3.x - 对象列的透视(无聚合)
- google-apps-script - Apps 脚本:将附件添加到邮件合并
- php - 如何进行直接 CURL 请求?
- php - json数组修改
- java - 嵌套逻辑运算符的 JPA NamedQueries 问题
- windows - 如何在 Windows MediaTranscoder API 中将 HDR 转码为 SDR?
- telethon - 会话持续多长时间?
- parsing - 向函数添加错误处理 - Haskell
- jena - Jena 查询优化
- activemq-artemis - Artemis REST API(通过 Jolokia)用于清除所有队列上的所有消息