首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >医疗诊断代码的SQL透视函数

医疗诊断代码的SQL透视函数
EN

Stack Overflow用户
提问于 2017-08-12 02:33:31
回答 1查看 247关注 0票数 0

我正试图在我的查询(SQL Server2008 R2)中透视数据,我只需要透视2列,但透视之后可能有多达20列。以下是我的测试数据,最多包含5个诊断代码:

代码语言:javascript
复制
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

我尝试获得的输出如下所示:

代码语言:javascript
复制
    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

我的代码是:

代码语言:javascript
复制
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帖子。我知道这已经在这个网站上重复了很多次,但如果你能帮助我理解我的查询中还需要什么才能让它工作,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-12 03:50:55

您需要修复列;SQL数据透视表与Access不同,这是一个示例

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45641762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档