2014-03-25 147 views
0

我有一個表像這樣的如何在SQL表拆分成多列

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

其中id - 整型,主鍵

NUM - INT,外鍵。只是一個數字。

人 - INT,外鍵。詮釋人的名字。

名字 - VARCHAR(30)

我得的id的列表中爲每個人這樣(ID不老ID,我要創建新的號碼,併爲「編號」列表每個人)

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

所以我希望看到NUM的編號列表每個人

我不知道有多少不同的人在那裏...幫助請。

+0

您使用的是什麼RDBMS? – Taosique

+0

有人告訴我該代碼應該沒有支點與MySQL和Microsoft SQL Server – paul

+0

您可以使用數據透視工作,如果你的SQL Server – Hitesh

回答

0

嘗試下面的查詢。既然你不知道的人數,把所有的人都在兩個變量,一個是它包含的別名,而另一個用於在旋轉使用其中只包含了人的select語句。

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; 
+0

不能做它的工作,任何解決方案? – paul

+0

對不起的人,我只知道這個辦法,希望別人能幫助您與任何其他方式 – Hitesh