SQL Server中的表透视
我有一个连接到个人的电话号码表,这些号码已经按个人ID进行了分区: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个,但我已经按优先
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个值进行硬编码,但这也可以动态完成。喜欢它。非常感谢。工作得很好。