Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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_Sql Server_Pivot - Fatal编程技术网

SQL Server中的表透视

SQL Server中的表透视,sql,sql-server,pivot,Sql,Sql Server,Pivot,我有一个连接到个人的电话号码表,这些号码已经按个人ID进行了分区: person_id number row_count 1 5556667777 1 1 5435346523 2 1 7645634344 3 2 5556667777 1 2 5435346523 2 3 7645634344 1 每个人的数字数量最多可以达到20个,但我已经按优先

我有一个连接到个人的电话号码表,这些号码已经按个人ID进行了分区:

person_id   number      row_count
1           5556667777  1
1           5435346523  2
1           7645634344  3
2           5556667777  1
2           5435346523  2
3           7645634344  1
每个人的数字数量最多可以达到20个,但我已经按优先级对它们进行了排序,并希望在每个人的前五个数字中创建五列,保留
null
空列,忽略超过第五列的数字:

person_id   num_1       num_2       num_3       num_4       num_5
1           5556667777  5435346523  7645634344  null        null
2           5556667777  5435346523  null        null        null
3           7645634344  null        null        null        null

我一直在环顾四周,看起来
pivot
是正确的命令,但我无法用一个足够类似的例子来完全理解它。

pivot
需要一些时间才能适应,但幸运的是,您的案例是一个非常简单的例子:

SELECT person_id, [1] Num_1,[2] Num_2,[3] Num_3,[4] Num_4,[5] Num_5
FROM Table1
PIVOT(MAX(number) FOR row_count IN ([1],[2],[3],[4],[5]))pvt
演示:


由于您只使用了5个数字,而忽略了其余的数字,因此很容易对使用的5个值进行硬编码,但这也可以动态完成。

喜欢它。非常感谢。工作得很好。