我有一个问题,我需要在一个字符串列上进行pivoting。我在下面的链接中找到了解决方法,但是不明白为什么当使用row_number时,对字符串数据列的pivoting可以工作。
表的定义。
ColumnName DataType
---------- --------
Occupation String
Name String
数据。
Occupation Name
---------- ----
Developer A
Developer B
Designer X
Coder Y
Coder Z
使用的查询是:
SELECT [Developer],
[Designer],
[Coder]
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY Occupation ORDER BY (SELECT NULL))
RN
FROM
#temp
) as t
PIVOT
(
MAX(Name)
FOR Occupation
IN ([Developer],[Designer],[Coder])
) as pvt
输出:
Developer Designer Coder
A X Y
B NULL Z
在前面的问题中,我们使用了'MAX'聚合函数。Row_number函数给表增加了一个维度,然后你就得到了这个。
Developer Designer Coder
A X Y
B NULL Z
而不是这个:
Developer Designer Coder
B X Z