【发布时间】:2018-05-14 10:12:41
【问题描述】:
我很难理解下面的 SQL 查询来透视表,
表格名称:职业
Name | Occupation
-----------------
Sam | Actor
Julia | Singer
Ketty | Actor
预期结果:
Actor | Singer
----------------
Sam | Julia
Ketty | null
我只有一行,当我执行下面的查询时,
Select [Actor],[Singer] From ( Select Occupation,Name From Occupations
)sub Pivot (Max(Name) For Occupation in ([Actor],[Singer])) pvt
输出:
Actor | Singer
----------------
Sam | Julia
当我使用 RowNumber() 修改上述查询时,我得到了预期的结果(多行)。
Select [Actor],[Singer]
From ( Select Occupation,Name,Row_Number() over(partition by Occupation order by Name)SNo
From Occupations )sub
Pivot (Max(Name) For Occupation in ([Actor],[Singer])) pvt
你能解释一下,如何在子查询中添加 Row_Number 函数给出多行?
【问题讨论】:
-
您的源数据不足以进行透视,因为没有将一位演员与另一位歌手逻辑连接的列。
-
其实我只想要演员和歌手的名单。如果我在问题中执行第二个查询,我得到了结果,但我不知道它是如何工作的。
-
为此,最好用谷歌搜索而不是问问题,看看
PIVOT和Row_Number()是如何工作的? -
@SuryaPrakash 下面的 Yogesh 答案应该适合你。
标签: sql sql-server pivot