2016-03-17 41 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; 
相关问题