2017-08-11 41 views
0

我試圖在我的查詢中轉換數據(SQL Server 2008 R2),並且我只需要旋轉2列,但在旋轉後最多可能有20列。這是我與多達5個診斷代碼的測試數據:用於醫療保健診斷代碼的SQL樞軸功能

pid DiagnosisCode 
111 145.9 
111 17.43 
111 17.84 
111 196.2 
111 202.81 
112 204.21 
112 249.71 
112 263.8 
112 145.9 
113 269.8 
113 276.7 

輸出,我試圖讓這個樣子的:

pid | code1 | code2 | code3 | code4 | code5 | code6 | code... | code20 
---------------------------------------------------------------------------- 
    111 145.9 17.43 17.84 196.2 202.81 NULL NULL  NULL 
    112 204.21 249.71 263.8 145.9 NULL NULL NULL  NULL 
    113 269.8 276.7 NULL NULL NULL NULL NULL  NULL 

我的代碼是:

select pid, DiagnosisCode 
from 
(select pid, DiagnosisCode, row_number() over(partition by pid order by pid) 
as seq 
from #temp 
) as src 
pivot 
(min(DiagnosisCode) 
for seq 
in (DiagnosisCode)) pvt 

不管出於什麼原因,這個函數都不會與我點擊。我知道MIN()聚合函數是必需的,但我不需要輸出一個。我添加了ROW_NUMBER()行,所以在閱讀一篇文章後會出現一個序列字段,但我不確定它爲什麼需要。我一直在閱讀這裏和其他網站上的所有其他Pivot帖子。我知道這個網站已經有很多次了,但是如果你能幫助我理解我的查詢需要什麼來使其發揮作用,我將不勝感激。

回答

0

您需要修復您的列; SQL Pivot表與Access不同,這是一個示例

declare @t as table (pid int , DiagnosisCode decimal(10,1)) 
insert @t select 111 , 145.9 
insert @t select 111 , 17.43 
insert @t select 111 , 17.84 
insert @t select 111 , 196.2 
insert @t select 111 , 202.81 
insert @t select 112 , 204.21 
insert @t select 112 , 249.71 
insert @t select 112 , 263.8 
insert @t select 112 , 145.9 
insert @t select 113 , 269.8 
insert @t select 113 , 276.7 


select * from @t 

select pid 
,code1 
,code2 
,code3 
,code4 
,code5 
,code6 
,code7 
,code8 
,code9 
,code10 
,code11 
,code12 
,code13 
,code14 
,code15 
,code16 
,code17 
,code18 
,code19 
,code20 
from 
(

select pid, DiagnosisCode, 'code' + cast(row_number() over(partition by pid order by pid) as varchar(2)) 
as seq 
from @t 
) as src 
pivot 
(min(DiagnosisCode) 
for seq 
in (
code1 
,code2 
,code3 
,code4 
,code5 
,code6 
,code7 
,code8 
,code9 
,code10 
,code11 
,code12 
,code13 
,code14 
,code15 
,code16 
,code17 
,code18 
,code19 
,code20 
)) pvt 



pid code1 code2 code3 code4 code5 code6 code7 .... code20 
---- ------ ------ ------- ------- ------ ------ ------  ------- 
111 145.9 17.4 17.8 196.2 202.8 NULL NULL  NULL 
112 204.2 249.7 263.8 145.9 NULL NULL NULL  NULL 
113 269.8 276.7 NULL NULL NULL NULL NULL  NULL 
+0

謝謝。我實際上來自Foxpro背景,所以我猜它是當我不明白某些東西時我回復的內容。 – Tmartin