sql - 将行转换为像枢轴一样的列
问题描述
表是:
+----+------+
| Id | Name |
+----+------+
| 1 | aaa |
| 1 | bbb |
| 2 | ccc |
| 2 | ddd |
| 3 | eee |
+----+------+
所需输出:
+----+---------------------++---------------------+
| Id | colum1 | column2 |
+----+---------------------+ +--------------------+
| 1 | aaa | | bbb |
+----+---------------------++---------------------+
+----+---------------------+ +--------------------+
| 2 | ccc | | ddd |
+----+---------------------++---------------------+
+----+---------------------+ +--------------------+
| 3 | eee | | null |
+----+---------------------++---------------------+
我一直在尝试 'with' a 和 pivot ,但如果我有多个 id,我想要一列似乎不是正确的方式
像图片
解决方案
如果您的名称数量有限,则可以使用row_number()
& 进行聚合,否则您需要为此使用动态 SQL:
select id,
max(case when seq = 1 then name end) as col1,
max(case when seq = 2 then name end) as col2,
max(case when seq = 3 then name end) as col3,
. . .
from (select t.*, row_number() over (partition by id order by name) as seq
from table t
) t
group by id;
推荐阅读
- mysql - 我如何才能获得每个工作的每个阶段的最后一行?
- javascript - 从 Laravel 刀片中的 js 文件访问对象?
- tensorflow - Tensorflow Serving:在基本路径 /models 下找不到可服务的 half_plus_two 的版本
- javascript - 这个while循环有什么问题?
- r - 我是新来的。我试图通过使用 for 循环使我的代码不那么复杂
- java - Java double - 某些小数位后只有零
- python-3.x - Python 3.8 sort - Lambda 函数对列表、字符串表现不同
- azure-devops - 使用 Azure DevOps 时,如何防止 FtpUpload@2 在 ftp 服务器上创建额外的根文件夹?
- sql - 在 case 语句中聚合“不是 GROUP BY 表达式”错误
- r - 如何在R中的列表中查找包含和不包含的单词