SQL Server LEAD()-funksjon

Sql Server Lead Funksjon



I denne artikkelen vil vi lede deg gjennom det grunnleggende om å jobbe med lead()-funksjonen i SQL Server. Vi vil dekke hva funksjonen gjør, dens syntaks og praktiske eksempler på hvordan du bruker den.

SQL Server Lead-funksjon

Leadfunksjonen i SQL Server er en analytisk funksjon som lar deg få tilgang til data fra en påfølgende rad i det samme resultatsettet uten en selvkobling.

Funksjonen lar deg få tilgang til en rad med en gitt forskyvning foran gjeldende rad. For eksempel ved å bruke ledefunksjonen kan du finne raden rett etter gjeldende rad, 10. rad fra gjeldende rad osv.







Denne funksjonen driver databaseutviklere til å utføre radsammenligninger uten komplekse oppgaver som å bli med, bruke visninger osv.



Funksjonssyntaks

Følgende viser syntaksen til lead()-funksjonen i SQL Server:



LEAD ( scalar_expression [ , offset ] , [ default ] )
OVER ( [partisjon_etter_klausul] rekkefølge_etter_klausul)

Den påfølgende listen er de støttede argumentene og deres funksjonalitet:





  1. scalar_expression – dette argumentet angir returverdien basert på den definerte offset. Dette kan være et uttrykk av hvilken som helst type som returnerer en enkelt verdi. Verdien av scalar_expression kan imidlertid ikke være en annen analytisk/vindusfunksjon.
  2. offset – dette angir hvor mange rader fra gjeldende radposisjon verdien hentet. Som standard vil funksjonen hente raden umiddelbart adjektiv til gjeldende rad. På samme måte kan ikke verdien til offsetparameteren være en analytisk funksjon eller et negativt heltall.
  3. standard – denne parameteren angir standardverdien hvis den angitte offsetverdien er utenfor målpartisjonens omfang. Som standard vil funksjonen returnere NULL.
  4. PARTITION BY – partition_by-leddet definerer reglene som deler opp resultatsettet i ulike seksjoner. Funksjonen blir deretter brukt på hver resulterende partisjon.
  5. ORDER BY – dette definerer den logiske rekkefølgen som radene i hver partisjon brukes i.

Funksjonen returnerer datatypen som er definert i scalar_expression. Hvis verdien som returneres er NULL, returnerer funksjonen NULL.

Eksempeldata

La oss bruke noen eksempeldatabaser for å illustrere best hvordan man bruker lead-funksjonen. Bruk først spørringene som vist nedenfor:



DROP DATABASE HVIS FINNES beholdning;

LAG DATABASE-inventar;

BRUK inventar;

DROP TABELL HVIS FINNES produkter;

CREATE TABLE-produkter (
id int identitet primærnøkkel ikke null,
produktnavn varchar(100),
produsent varchar(50),
mengde int ikke null,
pris int standard 0,
in_stock bit
);
sett inn i produkter (produktnavn, produsent, mengde, pris, på lager)
verdier ('Apple iPad Air', 'Apple', 100, 569.99, 1),
('Samsung Galaxy Z Flip 4', 'Samsung', 302, 1569.00, 1),
('Sony Playstation 5', 'Sony', 500, 499.99, 1),
('Samsung Galaxy Watch-5 Pro', 'Samsung', 600, 209/.99, 1),
('Apple Watch Series 6', 'Apple', 459, 379.90, 1),
('Apple AirPods Pro', 'Apple', 200, 199.99, 1),
('55' Class S95B OLED 4K Smart TV', 'Samsung', 900, 1999.90, 1),
('Odyssey Ark Quantum Mini-LED Curved Gaming Screen', 'Samsung', 50, 2999.90, 1);

Den resulterende tabellen er som vist:

Eksempel 1 – Bruk av SQL Server lead()-funksjon over et resultatsett

Eksemplet nedenfor bruker lead()-funksjonen for å returnere prisen på neste produkt.

å velge
Produktnavn,
produsent,
mengde,
pris,
bly(pris,
1) over (
bestille etter mengde)
fra
Produkter;

Resultattabell:

Siden det ikke er noen rad fra den siste kolonnen, returnerer funksjonen NULL.

Eksempel 2 – Bruk av SQL Server lead()-funksjonen over et partisjonssett

Vi kan også hente neste produkt i en gitt partisjon. For eksempel kan vi partisjonere dataene ovenfor basert på produsenten og bruke lead()-funksjonen i hver partisjon

En eksempelillustrasjon er som vist:

å velge
Produktnavn,
produsent,
mengde,
pris,
bly(pris,
1) over (
partisjon etter produsent
bestille etter mengde)
fra
Produkter;

Spørringen ovenfor skal dele radene basert på produsenten og hente neste pris for verdiene i hver partisjon.

I dette tilfellet er det tre partisjoner.

Konklusjon

I dette innlegget forsto du byggesteinene til lead()-funksjonen i SQL Server. Du har også lært hvordan du bruker lead()-funksjonen over et resultat- og partisjonssett.