我有按作业分区的 SQL 表,如下所示:
姓名 | 工作 | 行号 |
---|---|---|
阿古斯 | 演员 | 1 |
布迪 | 演员 | 2 |
雷尼 | 演员 | 3 |
波诺 | 医生 | 1 |
查理 | 医生 | 2 |
嘟嘟 | 医生 | 3 |
史蒂维 | 医生 | 4 |
迪马斯 | 教授 | 1 |
图蒂 | 教授 | 2 |
卡罗琳 | 教授 | 3 |
我想要的输出是这样的:
演员 | 医生 | 教授 |
---|---|---|
阿古斯 | 波诺 | 迪马斯 |
布迪 | 查理 | 图蒂 |
雷妮 | 嘟嘟 | 卡罗琳 |
空 | 史蒂维 | 空 |
如何通过查询sql得到这样的输出数据?
我看到一些使用聚合 MIN() 或 MAX() 的参考文献,但我仍然不明白它是如何工作的。据我所知,MIN() 或 MAX() 取表上的最小值或最大值。谁能解释一下这个吗?
此处使用 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;