У меня есть таблица отображения от одного до многих, отображаемая ниже. Мне нужно отобразить 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). Как я могу изменить код для отображения ICD10
для каждого ICD9
в столбце?
Если вы пытаетесь повернуть 12000 столбцов, вы не сможете. Я бы предложил посмотреть на что-то внутри вашего приложения, а не на SQL. Каково максимальное количество 'icd10', которое вы будете иметь для каждого' icd9'? – Taryn