sql >> Database teknologi >  >> RDS >> Sqlserver

TOP sænker forespørgslen

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

  1. ORA-00907:Manglende rigtige parentes ved oprettelse af fremmednøgle Oracle 12c

  2. At køre en .sql-fil i MySQL

  3. Opdaterer kolonne baseret på tidligere registrering

  4. sende en operand som en sql-parameter