2017-08-11 29 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