将分区上的值更改为列并取值

问题描述 投票:0回答:1

我有按作业分区的 SQL 表,如下所示:

姓名 工作 行号
阿古斯 演员 1
布迪 演员 2
雷尼 演员 3
波诺 医生 1
查理 医生 2
嘟嘟 医生 3
史蒂维 医生 4
迪马斯 教授 1
图蒂 教授 2
卡罗琳 教授 3

我想要的输出是这样的:

演员 医生 教授
阿古斯 波诺 迪马斯
布迪 查理 图蒂
雷妮 嘟嘟 卡罗琳
史蒂维

如何通过查询sql得到这样的输出数据?

我看到一些使用聚合 MIN() 或 MAX() 的参考文献,但我仍然不明白它是如何工作的。据我所知,MIN() 或 MAX() 取表上的最小值或最大值。谁能解释一下这个吗?

sql pivot aggregation partition-by
1个回答
0
投票

此处使用 MAX 函数来处理可能存在多个具有相同 Row_number 的行的情况。如果您的 Row_number 值是唯一的,您可以省略 GROUP BY 子句。

SELECT
    MAX(CASE WHEN Job = 'Actor' THEN Name END) AS Actor,
    MAX(CASE WHEN Job = 'Doctor' THEN Name END) AS Doctor,
    MAX(CASE WHEN Job = 'Professor' THEN Name END) AS Professor
FROM
    YourTableName
GROUP BY
    Row_number;

© www.soinside.com 2019 - 2024. All rights reserved.