2016-11-17 40 views
0
Reason      | ID 
--------------------------------------- 
Sales - Agent Attitude  | 2 
--------------------------------------- 
Billing - Process   | 2 
--------------------------------------- 
Technical - Outages   | 1005 
--------------------------------------- 
Technical - knowledge  | 1005 
--------------------------------------- 
Others      | 1005 
--------------------------------------- 

我有上面的表,我想通过使用SQL服务器像下面的结果我可以通过使用STUFF()函数将行分隔成一行但我想要的格式如下面的所以任何帮助基于唯一ID将行转换为一行

ID | Reason 1    | Reason 2     | Reason 3 
    --------------------------------------------------------------------- 
    2 | Sales - Agent Attitude | Billing - Process   | NULL 
    --------------------------------------------------------------------- 
    1005 | Technical - Outages | Technical - knowledge |Others 
    --------------------------------------------------------------------- 
+0

什么是预期的结果,如果一个ID有4个不同的原因是什么? – jarlh

+0

阅读关于[pivot。](https://technet.microsoft.com/en-us/library/ms177410(v = sql.105).aspx) –

+0

@jarlh我将自定义代码,最大的原因是我将有 –

回答

0

试试下面的查询..

  select distinct 
      ID , [1] as 'Reason 1' , [2] as 'Reason 2' , [3] as 'Reason 3' 
      from 
      (
       select *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY reason DESC) as RID from #temp 
      ) src 
      pivot 
      (
       max(Reason) 
       for rid in ([1], [2],[3]) 
      ) piv 

PLZ让我们知道,如果您有任何阙。或关注

+0

谢谢@Mr。 Bhosale但ID仍然重复每一个原因和其他原因null我需要将所有结果在一行 –

+0

你可以添加更多重复的O/P –

0

这是支点的解决方案:

;with 
t as (
    SELECT 'Reason ' + cast(ROW_NUMBER() over (partition by id order by id) as varchar(2)) n, * 
    from YourTable 
) 
select * 
FROM t 
pivot (min(reason) for n in ([Reason 1],[Reason 2],[Reason 3],[Reason 4],[Reason 5])) p 
+0

ID还仍然重复每个与理由和其他原因null我需要结合所有结果在一行 –