Lag -funksjonen i SQL Server er en Windows -funksjon introdusert i SQL Server 2012. Denne funksjonen lar deg hente dataene fra tidligere rader i henhold til den spesifiserte forskyvningsverdien. Tenk på etterslepfunksjonen som muligheten til å få tilgang til data fra tidligere rader fra den nåværende raden.
Fra den nåværende raden kan du for eksempel få tilgang til forrige rad, som blir den nåværende raden, og du kan få tilgang til forrige rad, og så videre.
I denne artikkelen lærer vi hvordan du bruker etterslepfunksjonen i SQL Server ved å bruke forskjellige eksempler.
SQL Server Lag () -funksjon
Vi uttrykker syntaks for funksjonen som:
lag (uttrykk, forskyvning [, standard])Funksjonsparametere og returverdi
I syntaks ovenfor har vi følgende parametere:
Funksjonen returnerer datatypen til skalaruttrykket.
SQL Server Lag Eksempler
La oss se på et praktisk eksempel for å forstå bedre hvordan vi bruker etterslepfunksjonen. La oss starte med å legge til prøvedata som vist:
Opprette databaseprøveb;Ovennevnte spørringssett skal returnere data som:
Kjør etterslepfunksjonen på DBName -kolonnen som vist i eksempelforespørselen nedenfor:
Velg *, lag (dbname, 1) over (bestill av dbname) som forrige_db fra lag_func;Spørringen over returnerer en utdata som:
Legg merke til at den første raden inneholder en nullverdi, da den ikke har en tidligere verdi.
Eksempel 2:
I stedet for å få en nullverdi der raden ikke inneholder en tidligere rad, kan vi angi en standardverdi, som vist i eksemplet på spørringen nedenfor:
Velg DBName, Lag (DBName, 1, 'N/A')Spørringen over returnerer en lignende utdata som ovenfor. I stedet for null, får vi imidlertid den spesifiserte strengen.
Eksempel 3: Tilpasset forskyvningsverdi
Vi kan også hente verdiene på en tilpasset forskyvningsverdi. For å få verdien av tre tidligere rader, kan vi for eksempel bruke spørringen: for eksempel:
Velg DBName, Lag (DBName, 3, 'N/A')Eksempelkoden ovenfor skal returnere resultatet som:
Her er de tre første kolonnene null ettersom forskyvningsverdiene går utover de tilgjengelige radens omfang.
Eksempel 4: partisjon av
Vi kan lage logiske partisjoner av relaterte data ved å bruke partisjonen etter klausul. Vi kan deretter bruke etterslepfunksjonen på hver partisjon.
Tenk på eksemplet nedenfor:
Velg DBNAME, PARADIGM, LAG (DBNAME, 1, 'N/A')Spørringen over returnerer et eksempel på spørringssett som:
Spørringen oppretter 6 partisjoner basert på paradigmet i resultatet ovenfor. På hver partisjon henter etterslepfunksjonen forrige rad.
Konklusjon
Denne artikkelen lærte deg hvordan du bruker SQL Server Lag -funksjonen for å hente forrige rad fra et resulterende sett.
Takk for at du leser!