SQL Server LEAD()-funktion

Sql Server Lead Funktion



I den här artikeln går vi igenom grunderna för att arbeta med funktionen lead() i SQL Server. Vi kommer att täcka vad funktionen gör, dess syntax och praktiska exempel på hur man använder den.

SQL Server Lead-funktion

Lead-funktionen i SQL Server är en analytisk funktion som låter dig komma åt data från en efterföljande rad i samma resultatuppsättning utan självkoppling.

Funktionen gör det möjligt för dig att komma åt en rad med en given offset före den aktuella raden. Till exempel, med hjälp av lead-funktionen kan du hitta raden direkt efter den aktuella raden, den 10:e raden från den aktuella raden, etc.







Denna funktion driver databasutvecklare att utföra radjämförelser utan komplexa uppgifter som att gå med, använda vyer etc.



Funktionssyntax

Följande skildrar syntaxen för funktionen lead() i SQL Server:



LEAD ( scalar_expression [ , offset ] , [ default ] )
ÖVER ( [partition_by_clause] order_by_clause)

Den efterföljande listan är de argument som stöds och deras funktionalitet:





  1. scalar_expression – detta argument anger returvärdet baserat på den definierade offseten. Detta kan vara ett uttryck av vilken typ som helst som returnerar ett enda värde. Värdet på scalar_expression kan dock inte vara en annan analytisk/fönsterfunktion.
  2. offset – detta ställer in hur många rader från den aktuella raden som värdet hämtas. Som standard kommer funktionen att hämta raden omedelbart adjektiv till den aktuella raden. På samma sätt kan värdet på offsetparametern inte vara en analytisk funktion eller ett negativt heltal.
  3. default – denna parameter ställer in standardvärdet om det angivna offsetvärdet ligger utanför målpartitionens räckvidd. Som standard returnerar funktionen NULL.
  4. PARTITION BY – partition_by-satsen definierar reglerna som delar upp resultatuppsättningen i olika sektioner. Funktionen tillämpas sedan på varje resulterande partition.
  5. ORDER BY – detta definierar den logiska ordningen i vilken raderna i varje partition tillämpas.

Funktionen returnerar datatypen som definierats i scalar_expression. Om värdet som returneras är NULL, returnerar funktionen NULL.

Stickprov

Låt oss använda några exempeldatabaser för att bäst illustrera hur man använder leadfunktionen. Använd först frågorna enligt nedan:



SLIP DATABAS OM FINNS inventering;

SKAPA DATABAS-inventering;

ANVÄND inventering;

SLIPP TABELL OM FINNS produkter;

CREATE TABLE-produkter (
id int identitet primärnyckel inte null,
produktnamn varchar(100),
tillverkare varchar(50),
kvantitet int inte null,
pris int standard 0,
in_stock bit
);
infoga i produkter (produktnamn, tillverkare, kvantitet, pris, i_lager)
värden ('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 resulterande tabellen är som visas:

Exempel 1 – Använda SQL Server lead()-funktion över en resultatuppsättning

Exemplet nedan använder funktionen lead() för att returnera priset för nästa produkt.

Välj
produktnamn,
tillverkare,
kvantitet,
pris,
bly(pris,
1) över (
beställ efter kvantitet)
från
Produkter;

Resultattabell:

Eftersom det inte finns någon rad från den sista kolumnen, returnerar funktionen NULL.

Exempel 2 – Använda funktionen SQL Server lead() över en partitionsuppsättning

Vi kan också hämta nästa produkt i en given partition. Till exempel kan vi partitionera data ovan baserat på tillverkaren och tillämpa funktionen lead() i varje partition

En exempelillustration är som visas:

Välj
produktnamn,
tillverkare,
kvantitet,
pris,
bly(pris,
1) över (
partition efter tillverkare
beställ efter kvantitet)
från
Produkter;

Frågan ovan bör dela upp raderna baserat på tillverkaren och hämta nästa pris för värdena i varje partition.

I det här fallet finns det tre partitioner.

Slutsats

I det här inlägget förstod du byggstenarna för funktionen lead() i SQL Server. Du lärde dig också hur du använder funktionen lead() över en resultat- och partitionsuppsättning.