sql - SQL - 两列按分组数据分成多列
问题描述
我的任务是想出一种翻译以下数据的方法:
Column_A Column_B
----------------------
A AA
A BB
B CC
B DD
C EE
C FF
C GG
至
A B C
----------
AA CC EE
BB DD FF
GG
等等..
Column_B 可以是 NULL 或空白,两者都可以,并且 Column_A 需要是动态的。我试图研究并登陆 PIVOT,但它需要 3 列才能转换。我试过这个答案,但结果是
A B C
----------
AA BB CC
DD EE FF
GG
Column_A 可以有最少 25 个唯一记录。
解决方案
您可以使用row_number()
生成行号然后聚合:
select max(case when a = 'A' then b end) as a,
max(case when a = 'B' then b end) as b,
max(case when a = 'C' then b end) as c
from (select t.*, row_number() over (partition by a order by b) as seqnum
from t
) t
group by seqnum
order by seqnum;
推荐阅读
- excel - 我的 VBA 单元格引用正常工作,但现在出现错误:“对象变量或未设置块变量”
- javascript - 如何在客户端javascript中使用crypto js publicEncrypt和privateDecrypt?
- javascript - 导出默认{名称}和命名导出{名称}之间的区别
- python - AWS Glue python Shell 库导入错误 (pyodbc)
- python - 为什么我的龙卷风应用程序不起作用?(带 aiomysql 的龙卷风博客)
- html - 我可以在 GitLab 上渲染 HTML 吗?
- mysql - 如何在查询中使用变量
- c# - 如何在 linq 中编写此 C# 语句
- r - optimParallel 找不到 Rcpp 函数
- java - 谷歌播放权限政策中的“设备上的助理处理程序”是什么意思?