Sql server 为什么字符串数据列的数据透视与行数有关?
我遇到了一个问题,需要以字符串列为轴心。我在下面的链接中找到了解决方案,但无法理解为什么在使用行号时,数据透视适用于具有字符串数据的列 表定义:Sql server 为什么字符串数据列的数据透视与行数有关?,sql-server,pivot,row-number,Sql Server,Pivot,Row Number,我遇到了一个问题,需要以字符串列为轴心。我在下面的链接中找到了解决方案,但无法理解为什么在使用行号时,数据透视适用于具有字符串数据的列 表定义: ColumnName DataType ---------- -------- Occupation String Name String 数据: 使用的查询是: SELECT [Developer], [Designer], [Coder] FROM ( SELECT *,
ColumnName DataType
---------- --------
Occupation String
Name String
数据:
使用的查询是:
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”聚合函数。对于包含两列的表,它只返回一行:一个值用于developer,一个值用于coder et.c。Row_number函数向表中添加一个维度,您可以得到以下结果:
Developer Designer Coder
A X Y
B NULL Z
与此相反:
Developer Designer Coder
B X Z
在前面的问题中,使用了“MAX”聚合函数。对于包含两列的表,它只返回一行:一个值用于developer,一个值用于coder et.c。Row_number函数向表中添加一个维度,您可以得到以下结果:
Developer Designer Coder
A X Y
B NULL Z
与此相反:
Developer Designer Coder
B X Z
. . 问题本身应该是完整的。这需要样本数据、期望的结果和适当的数据库标记。指向“我不明白”的链接不是一个有效的问题。问题本身应该是完整的。这需要样本数据、期望的结果和适当的数据库标记。“我不明白”的链接不是一个有效的问题。仍然无法理解。请再详细说明一下。@user9463在SQL中进行数据透视需要一个聚合函数(sum、count、avg、max、min)。因为我们处理字符串数据,所以只能使用MAX和MIN函数。若输入表中只有两列,这些函数只为透视表中的一列返回一个值。因此,对于本例中的每个作业(B、X和Z),查询只返回具有最大ASCII值的字母。我们在每个作业上添加一个带有行号的列以分离子集,并对每个值而不是它们的子集应用聚合函数。我们得到了多行的pivot,而不是一行的pivot,但我们仍然无法理解。请再详细说明一下。@user9463在SQL中进行数据透视需要一个聚合函数(sum、count、avg、max、min)。因为我们处理字符串数据,所以只能使用MAX和MIN函数。若输入表中只有两列,这些函数只为透视表中的一列返回一个值。因此,对于本例中的每个作业(B、X和Z),查询只返回具有最大ASCII值的字母。我们在每个作业上添加一个带有行号的列以分离子集,并对每个值而不是它们的子集应用聚合函数。我们得到了多行的轴,而不是一行的轴