如何将SQL表拆分为多个列

时间:2014-03-25 07:10:09

标签: sql

我有一张像这样的桌子

==========================
ID | num   | person | name    
--------------------------
 1 | int   | int    | varchar
 2 | int   | int    | varchar
==========================

其中id - int,主键

num - int,外键。只是一个数字。

person - int,外键。人的内部名称。

name - varchar(30)

我必须得到每个人的id列表,如(ID不是旧ID,我必须为每个人创建新号码并列出“num”)

===============================
ID | person1 | person2 | person3    
-------------------------------
 1 | num     | num     | num
 2 | num     | num     | num
===============================

所以我想看看每个人的编号列表

我不知道那里有多少不同的人......请帮助。

1 个答案:

答案 0 :(得分:0)

尝试以下查询。由于你不知道人数,所以将它们全部放在两个变量中,一个用于包含别名的select语句,另一个用于包含仅包含人员的pivot。

select @persons = @persons + '[' + A.name + '],'
from table1

select @personsalias = @persons + '[' + A.name + '] as [' + A.name + '],'
from table1

SELECT Id, 
@personsalias
FROM
(SELECT Id, num, name 
FROM table1) AS SourceTable
PIVOT
(
MAX(num)
FOR name IN (@persons)
) AS PivotTable;