【发布时间】:2017-12-10 11:45:43
【问题描述】:
我有其他人编写的此查询,我正在尝试弄清楚它是如何工作的。我对所有这些事情都有大致的了解,例如row_number()、partition by、pivot,但我无法一起理解它们。
对于这个查询:
select
d, p, s, a
from
(
select name,occupation, (ROW_NUMBER() OVER (partition by occupation order by name)) as rownumber from occupations
)
pivot
(
max(name)
for occupation
in ('Doctor' as d, 'Professor' as p, 'Singer' as s, 'Actor' as a)
)
order by rownumber;
这是上面查询工作的输入表:
这是查询生成的输出,根据问题是正确的:
Jenny Ashley Meera Jane
Samantha Christeen Priya Julia
NULL Ketty NULL Maria
现在,我想知道查询是如何生成输出的,即逐步执行流程。与上述情况相匹配的简单示例的解释将不胜感激。提前致谢。
【问题讨论】:
-
投反对票的请说明原因
标签: oracle pivot row-number partition-by