用于医疗诊断代码的SQL Pivot功能

时间:2017-08-11 18:33:31

标签: sql-server pivot

我正在尝试在我的查询中调整数据(SQL Server 2008 R2),我只需要旋转2列,但在数据透视后最多可能有20列。这是我的测试数据,最多包含5个诊断代码:

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 个答案:

没有答案