Mam jedną do wielu tabel mapowania wyświetlanych jak poniżej. Muszę wyświetlić ICD10
POZIOME. dla każdego ICD9
. Dane są dynamiczne, dlatego nie mogę korzystać ze statycznej funkcji obrotu.Wyświetlanie od poziomu do pionu za pomocą funkcji Dynamic Pivot
ICD9 | ICD10
-----+------
0156 | 0178
0156 | 0179
| 0181
0152 | 0202
0231 | 0210
0231 | 0211
0231 | 0212
Chcę wynik ma być wyświetlany as-
ICD9 | ICD10 | ICD10 | ICD10
0156 | 0178 | 0179 | null
| 0181 | null | null
0152 | 0202 | null | null
0231 | 0210 | 0211 | 0212
Obecnie Próbowałem użyć tego kodu:
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)
ale to nie działa jak mam zbyt wiele rekordów (około 12000). Jak mogę zmienić kod wyświetlający ICD10
dla każdego ICD9
w kolumnie?
Jeśli próbujesz przestawić 12000 kolumn, nie będziesz w stanie. Sugerowałbym, żeby zrobić coś wewnątrz aplikacji zamiast w SQL. Jaka jest maksymalna liczba 'icd10', którą będziesz mieć dla każdego' icd9'? – Taryn