2011-11-10 50 views
1

請condider其中有兩個表,BodyFile的情況,其中第一個的每個記錄在第二個零個或多個相應的記錄:立臥表在SQL Server 2005中

BodyID | Body 
------------- 
1  | X 
2  | Y 

FileID | BodyID | File 
------------------------ 
1  | 1  | A 
2  | 1  | B 
3  | 2  | C 
4  | 2  | D 
5  | 2  | E 

當然,這是很容易加入兩個表,並得到類似

BodyID | FileID | Body | File 
----------------------------- 
1  | 1  | X | A 
1  | 2  | X | B 
2  | 3  | Y | C 
2  | 4  | Y | D 
2  | 5  | Y | E 

不過,我希望能夠做的就是這同一個表格轉換爲一個橫向一,像

BodyID | Body | File1 | File2 | File3 | ... 
------------------------------------------- 
1  | X | A  | B  | NULL | ... 
2  | Y | C  | D  | E  | ... 

當沒有文件時,每列被替換爲NULL(或任何其他「有意義」的值)。問題是我既不能使用D-SQL也不能使用遊標。任何人都可以請幫我嗎?

+1

在此網站上查找「sql數據透視表」。 – Oded

+1

雖然您需要動態SQL或者將大量常量「Filen」列硬編碼至最大值。您需要在'ROW_NUMBER OVER(PARTITION BY BodyID ORDER BY文件)'''PIVOT'' –

回答

2

無論何時您需要將行轉換爲列,然後使用pivot.you都可以搜索msdn作爲數據透視。