我有一對多的映射表,如下所示。我需要顯示HORIZONTALLY的ICD10
。 每個ICD9
。數據是動態的,因此我不能使用靜態透視功能。使用動態樞軸功能的水平垂直顯示
ICD9 | ICD10
-----+------
0156 | 0178
0156 | 0179
| 0181
0152 | 0202
0231 | 0210
0231 | 0211
0231 | 0212
我要顯示原樣
ICD9 | ICD10 | ICD10 | ICD10
0156 | 0178 | 0179 | null
| 0181 | null | null
0152 | 0202 | null | null
0231 | 0210 | 0211 | 0212
目前,我試圖用這個代碼的結果:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(icd10)
FROM mv_icd
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT icd9, ' + @cols + ' from
(
select icd9,icd10 from mv_icd
) x
pivot
(
min(icd9)
for icd10 in (' + @cols + ')
) p '
execute(@query)
但因爲我有太多的記錄,這是行不通的(約12000)。如何更改代碼以在列中顯示每個ICD9
的ICD10
?
如果您試圖旋轉12000列,您將無法使用。我建議你在應用程序內部而不是SQL中進行一些操作。每個'icd9'都有多少'icd10'? – Taryn