Ho una tabella di mappatura da uno a molti visualizzata come di seguito. Devo visualizzare lo ICD10
ORIZZONTALMENTE. per ogni ICD9
. I dati sono dinamici quindi non posso usare la funzione di pivot statico.Visualizzazione orizzontale a verticale mediante la funzione di rotazione dinamica
ICD9 | ICD10
-----+------
0156 | 0178
0156 | 0179
| 0181
0152 | 0202
0231 | 0210
0231 | 0211
0231 | 0212
voglio il risultato da visualizzare AS
ICD9 | ICD10 | ICD10 | ICD10
0156 | 0178 | 0179 | null
| 0181 | null | null
0152 | 0202 | null | null
0231 | 0210 | 0211 | 0212
Attualmente ho provato ad usare questo codice:
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)
ma non funziona come ho troppi record (circa 12000). Come posso modificare il codice per visualizzare ICD10
per ogni ICD9
in una colonna?
Se si sta tentando di ruotare 12000 colonne, non sarà possibile. Suggerirei di cercare di fare qualcosa all'interno dell'applicazione anziché in SQL. Qual è il numero massimo di 'icd10' che avrai per ogni' icd9'? – Taryn