VÆLG TOP 1000 *FRA ( SELECT patientId, labId, result, DENSE_RANK() OVER (PARTITION BY patientId, labId ORDER BY labDate DESC) dr FROM labs ) qPIVOT ( MIN(result) FOR labId IN ([1) ],[2],[3],[4],[5],[7],[8],[9],[10],[11],[12],[13],[14], [15],[16],[17]) ) pWHERE dr =1ORDER BY patientId
Du kan også prøve at oprette en indekseret visning som denne:
OPRET VISNING v_labs_patient_labWITH SCHEMABINDINGASSELECT patientId, labId, COUNT_BIG(*) AS cntFROM dbo.labsGROUP BY patientId, labIdCREATE UNIQUE CLUSTERED INDEX ux_labs_patient_labent_labentId_lab, (
og brug det i forespørgslen:
VÆLG TOP 1000 *FRA ( VÆLG lr.patientId, lr.labId, lr.result FROM v_labs_patient_lab vl KRYDS ANVENDELSE (VÆLG TOP 1 MED BÅND resultat FRA labs l HVOR l.patientId =vl.ANDl. labId =vl.labId BESTIL EFTER l.labDate DESC ) lr ) qPIVOT ( MIN(resultat) FOR labId IN ([1],[2],[3],[4],[5],[7],[8 ],[9],[10],[11],[12],[13],[14],[15],[16],[17]) ) BESTIL EFTER patientId