La funzione LAG in SQL Server è una funzione Windows introdotta in SQL Server 2012. Questa funzione consente di recuperare i dati delle righe precedenti secondo il valore di offset specificato. Pensa alla funzione LAG come la possibilità di accedere ai dati dalle righe precedenti dalla riga corrente.
Ad esempio, dalla riga corrente, è possibile accedere alla riga precedente, che diventa la riga corrente e puoi accedere alla riga precedente e così via.
In questo articolo, impareremo come utilizzare la funzione LAG in SQL Server utilizzando vari esempi.
Funzione sql server lag ()
Esprimiamo la sintassi della funzione come:
lag (espressione, offset [, default])Parametri della funzione e valore di ritorno
Nella sintassi sopra, abbiamo i seguenti parametri:
La funzione restituisce il tipo di dati dell'espressione scalare.
Esempi di ritardo del server SQL
Vediamo un esempio pratico per capire meglio come usare la funzione di ritardo. Iniziamo aggiungendo i dati di esempio come mostrato:
Creare il database SampledB;Il set di query sopra dovrebbe restituire i dati come:
Esegui la funzione LAG sulla colonna DBName come mostrato nella query di esempio seguente:
Seleziona *, lag (dbname, 1) over (ordine per dbname) come precedente_db da Lag_func;La query sopra restituisce un output come:
Si noti, la prima riga contiene un valore nullo, in quanto non ha un valore precedente.
Esempio 2:
Invece di ottenere un valore nullo in cui la riga non contiene una riga precedente, possiamo impostare un valore predefinito, come mostrato nella query di esempio di seguito:
Seleziona dbname, lag (dbname, 1, 'n/a')La query sopra restituisce un output simile a quello sopra. Tuttavia, invece di null, otteniamo la stringa specificata.
Esempio 3: valore offset personalizzato
Possiamo anche recuperare i valori su un valore di offset personalizzato. Ad esempio, per ottenere il valore di tre righe precedenti, possiamo usare la query:
Seleziona dbname, lag (dbname, 3, 'n/a')Il codice di esempio sopra dovrebbe restituire il risultato come:
Qui, le prime 3 colonne sono nulle poiché i valori di offset vanno oltre l'ambito delle righe disponibile.
Esempio 4: partizione di
Possiamo creare partizioni logiche di dati correlati utilizzando la partizione per clausola. Possiamo quindi applicare la funzione di ritardo a ciascuna partizione.
Considera l'esempio seguente:
Seleziona dbname, paradigm, lag (dbname, 1, 'n/a')La query sopra restituisce una query di esempio impostata come:
La query crea 6 partizioni in base al paradigma nel risultato sopra. Su ogni partizione, la funzione LAG recupera la riga precedente.
Conclusione
Questo articolo ti ha insegnato come utilizzare la funzione LAG SQL Server per recuperare la riga precedente da un set risultante.
Grazie per aver letto!