Bruger-SQL eksempel

<< Click to Display Table of Contents >>

Navigation:  Programmets anvendelse > Udtræk > Bruger-SQL >

Bruger-SQL eksempel

Previous pageReturn to chapter overviewNext page

Bruger-SQL eksempel

Her ses et eksempel på hvordan man finder de diagnosekoder, der er tilført diagnoselisten inden for de sidste 2 år, og som ikke blot er erstatning af tidligere koder med justeringer af tekst eller andre felter for samme kodenummer.

Udtrykket illusterer hvordan man i samme kørsel med forskellige kriterier kan foretage to successive udtræk på samme tabel SKScomplete for derefter at få sit endelige resultat ved at matche disse to udtræk over for hinanden ved at lade det andet udtræk stille en betingelse for forekomst (eller ikke-forekomst) i det første udtræk, der er mellelagret i den temporære tabel Temp.

For de felter (her kun feltet SKSkode), der optræder i begge udtræk, er det nødvendigt når udtrækkene samkøres, at differentiere om der menes SKSkode fra det første eller andet undtræk og her specificeret med de arbitrært valgte tabel alias-navne mt og sks.

/* Diagnosekoder nyoprettede inden for de sidste 2 år,
fortsat aktive og som ikke har afløst tidligere kodning med samme kodenummer */

 

DROP TABLE IF EXISTS SKStemp;

CREATE TEMPORARY TABLE SKStemp AS
SELECT SKSkode

FROM SKScomplete

WHERE DatoSlut < CURRENT_DATE

;

 

SELECT sks.*

FROM SKScomplete AS sks

LEFT JOIN SKStemp AS mt

ON sks.SKSkode = mt.SKSkode

WHERE JULIANDAY(DatoIKraft) > (JULIANDAY(CURRENT_DATE) - 365*2)

AND Kat = 'dia'

AND DatoSlut > CURRENT_DATE

AND mt.SKSkode IS NULL

ORDER BY sks.Kat

;

Forklaring:

Første linie (her grøn) er inaktiv som kode ved at være omkranset af /* */ men giver en god beskrivelse af udtrykkets funktion, der kan være nyttigt som dokumentation eller for en selv ved senere genfremhentning af udtrykket.

Øverste deludtryk (her blåt), der kun trækker på feltet SKSkode, finder de SKS-koder, der med tilhørende Kodetekst er udgåede ved at DatoSlut < NOW, dvs. slutdatoen ligger før nutid.

oFor ikke unødig at lagre resultatet på disk-plads, lægges resultatet blot i computerens hukommelse (TEMPORARY TABLE) med tabelnavnet SKStemp.

Nederste deludtryk (her rødt) finder (SELECT sks.*) alle datafelter fra tabel-trækket SKScomplete AS sks, for de poster der er nugældende, dvs. har udløbsdato ud i fremtiden med DatoSlut > CURRENT_DATE.
Ved specifikt kun at medtage den venstre side (sks.*) af JOIN relationen undgår man at få vist den tomme kolonne (mt.SKSkode) fra den højre side af JOIN-relationen, som kun bruges til filtrering på at feltindholdet netop NULL (tomt).

oData hentes fra tabellen SKScomplete, der, for længere nede i udstrykket at adskille data trukket fra det første udtryk, hér tildeles et alias sks som i
FROM SKScomplete AS sks.

oDette sekundære udtræk matches (LEFT JOIN) med det første udtræk (SKStemp AS mt), hvor match betinges at være på feltet SKSkode i hvert af de to udtræk: sks.SKSkode = mt.SKSkode.

oEt LEFT JOIN går ud på, at alle poster i tabellen (SKScomplete AS sks) til venstre for JOIN-udsagnet skal medtages, og at tomme data tillades fra den tabel (MEMORY Temp) , der står til højre for JOIN-udsagnet.

oDernæst afgrænses til kodekataloget for diagnoser med Kat = 'dia'.

oHerefter tilføjes betingelsen at kodens ikraftrædelse har været inden for de sidste to år med
JULIANDAY(DatoIKraft) > (JULIANDAY(CURRENT_DATE) - 365*2).
Bemærk den nødvendige konvertering med JULIANDAY() på begge datoer, da dato-værdien til højre manipuleres aritmetrisk.

oEndelig vises i det finale resultat kun de poster i det sekundære udtræk, hvor SKSkode ikke findes (mt.SKSkode IS NULL) i det primære udtræk, som netop kun indeholdt udgåede koder (DatoSlut < CURRENT_DATE).

oDen temporære tabel SKStemp (oprettet som TEMPORARY TABLE) forsvinder, så snart programmet lukkes.

Eksemplet kan naturligvis kopieres herfra og ind i programmet og med de tilpasninger du måtte ønske - f.eks. justering af tidsvinduet tilbage i tiden (JULIANDAY(CURRENT_DATE) - 365*2) hvor 2 her angiver 2 år tilbage i tiden fra nutid (CURRENT_DATE).

Se også JULIANDAY.

__________________________
Online hjælp 10. juni 2026; Copyright © 2017-2026 Niels Knabe