2016-03-17 46 views
0

我與SQL Server 2008的工作,我有它返回這個結果的臨時表:組中有多個結果行通過在SQL Server的一列2008

ID  NAME  TYPE  REGION DATE_HIRED 
-------------------------------------------------- 
75038 GRUPO FOO COMPANY A EUROPE 201512 
75038 GRUPO FOO COMPANY A EUROPE 201511 
75038 GRUPO FOO COMPANY A EUROPE 201510 

我想獲取日期公司與同一行中的所有信息,租用的和我想的結果是在這樣的格式:

ID  NAME  TYPE  REGION DATE_HIRED1 DATE_HIRED2 DATE_HIRED3... 
75038 GRUPO FOO COMPANY A EUROPE 201512   201511  201510... 

租用的可能日期可以是4(201512,201511,201510,201509 ),但公司在這些日期之一中不能簽訂合同?

如何使用SQL Server 2008查詢以獲得上述結果?

我試過在SQL Server 2008中使用PIVOT但我失敗了。

我懷疑PIVOT運算符是我所需要的(根據這篇文章,無論如何),但我無法弄清楚如何開始,特別是當表中question_id行的數量可能不同時。在上面的例子中,它是5,但在另一個查詢中,該表可能會填充7個不同的問題。

回答

2

您可以使用pivot或條件聚合。關鍵是要獲得一個用於擺動的列 - 使用row_number()

select id, name, type, region, 
     max(seqnum = 1 then date_hired end) as date_hired1, 
     max(seqnum = 2 then date_hired end) as date_hired2, 
     max(seqnum = 3 then date_hired end) as date_hired3, 
     max(seqnum = 4 then date_hired end) as date_hired4 
from (select t.*, 
      row_number() over (partition by id order by date_hired) as seqnum 
     from t 
    ) t 
group by id, name, type, region; 
相關問題