Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 为什么字符串数据列的数据透视与行数有关?_Sql Server_Pivot_Row Number - Fatal编程技术网

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值的字母。我们在每个作业上添加一个带有行号的列以分离子集,并对每个值而不是它们的子集应用聚合函数。我们得到了多行的轴,而不是一行的轴