我有其他人写的这个查询,我试图弄清楚它是如何工作的。我对所有这些事情都有大致的了解,例如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
现在,我想知道查询是如何生成输出的,即逐步执行流程。与上述情况相匹配的简单示例的解释将不胜感激。提前致谢。