2011-07-27 147 views
0

這是我的查詢。如何將行值轉換爲SQL Server 2008中的列標題?

SELECT * FROM client_data where RefID =27 

Value列的數據類型爲nvarchar

表就像下面...

AnalysisID RefID  RefColumn    Value 

44  27 Reporting_Currency  EUR 
44  27 Reporting_Currency  EUR 
44  27 Reporting_Currency  USD 
44  27 Reporting_Group   0001 
44  27 Reporting_Group   0001 
44  27 Reporting_Group   0002 
44  27 Reporting_Language  EN 
44  27 Reporting_Language  EN 
44  27 Reporting_Language  DE 
65  27 Company_Code   - 
65  27 MANDT    - 
65  27 Reporting_Currency  - 

預期的結果:

Analysisid  Reporting_Currency Reporting_Group Reporting_Language 

44   EUR  0001   EN 
44   EUR  0001   EN 
44   USD  0002   DE 
65   -  

我試着用PIVOT但未能成功。

我該怎麼做?

問候, 約翰福音

回答

1

第一件事:有一個與您的數據的一個主要問題 - 因爲沒有什麼配合你定義的內容爲單獨列在一起,這樣,比結果集的排序等。你應該在那裏有一個名爲「item」的列,它們將這些鏈接在一起。

不過我強加在下面的SQL實例排序:

;WITH CTE_TestData as (

select AnalysisID = 44, RefID=27, RefColumn = 'Reporting_Currency', Value='EUR' 
union all select 44,  27, 'Reporting_Currency',  'EUR' 
union all select 44,  27, 'Reporting_Currency',  'USD' 
union all select 44,  27, 'Reporting_Group',   '0001' 
union all select 44,  27, 'Reporting_Group',   '0001' 
union all select 44,  27, 'Reporting_Group',   '0002' 
union all select 44,  27, 'Reporting_Language',  'EN' 
union all select 44,  27, 'Reporting_Language',  'EN' 
union all select 44,  27, 'Reporting_Language',  'DE' 
union all select 65,  27, 'Company_Code',   null 
union all select 65,  27, 'MANDT',    null 
union all select 65,  27, 'Reporting_Currency',  null 

) 

select AnalysisID, Reporting_Currency, Reporting_Group, Reporting_Language 
from (
    select *, rowno = row_number() OVER (PARTITION BY refid, analysisid, RefColumn Order By refid, analysisid, refcolumn) 
    from 
     CTE_TestData t 
    ) unpvt 
    PIVOT (min(value) FOR RefColumn in ([Reporting_Currency], [Reporting_Group], [Reporting_Language])) pvt 

返回:

AnalysisID Reporting_Currency Reporting_Group Reporting_Language 
44   EUR     0001   EN 
44   USD     0002   EN 
44   EUR     0001   DE 
65   NULL    NULL   NULL 
相關問題