2016-11-17 42 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我需要結合所有結果在一行 –