2013-09-11 31 views
1

我有一個返回與2列的數據集,如下所示的查詢:從行重塑數據文件在SQL-SERVER列

-------------------------- 
|spec-number|project | 
|-----------|-----------| 
|649841  |A   | 
|649841  |B   | 
|649841  |D   | 
|84709  |E   | 
|84709  |B   | 
|84709  |C   | 
|84709  |K   | 
------------------------- 

的項目規格號碼可參與可以在數可能是無限的。

我想什麼結果的樣子是:

------------------------------------------------- 
|spec-number|project1|project2|project3|project4| 
|-----------|--------|--------|--------|--------| 
|649841  |A  |B  |D  |  | 
|84709  |E  |B  |C  |K  | 
------------------------------------------------- 

我試圖擺動,但它只是給我的天賦,一些項目交叉選項卡。 任何幫助將不勝感激!

回答

0

如果您希望它們作爲單獨的列,則可以計算項目編號並將其用於旋轉。下面以group by方法彙總:

select spec_num, 
     max(case when seqnum = 1 then project end) as project1, 
     max(case when seqnum = 2 then project end) as project2, 
     max(case when seqnum = 3 then project end) as project3, 
     max(case when seqnum = 4 then project end) as project4 
from (select t.*, 
      row_number() over (partition by spec_number order by project) as seqnum 
     from t 
    ) t 
group by spec_num; 

如果您需要一個變量數列,那麼你就必須使用動態SQL。如果您願意,這也可以表示爲pivot查詢。

+0

謝謝戈登。差不多了!可能會有不定數量的項目列。你能指點我一個你正在談論的動態sql代碼的例子嗎? –

+0

這裏是一個例子:http://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query。感謝戈登 –

+0

。最終想出了它。 –