Ce face LEAD()
LEAD() este pereche cu LAG(), dar „se uită înainte”. Este util pentru durate (de la acest eveniment până la următorul) sau pentru a afișa ce urmează.
Parametri
| Parametru | Descriere |
|---|---|
expresie |
Valoarea citită din rândul următor. |
n |
Opțional. Cu câte rânduri înainte (implicit 1). |
implicit |
Opțional. Valoarea când nu există rând următor. |
Ce returnează
Valoarea din rândul următor.
Exemple
Exemplul 1: Câte zile au trecut până la următoarea comandă
CREATE TABLE comenzi (client VARCHAR(10), data DATE);
INSERT INTO comenzi VALUES ('Ana', '2026-09-01'), ('Ana', '2026-09-20'), ('Ana', '2026-10-15'), ('Dan', '2026-10-01');
SELECT client, data,
LEAD(data) OVER (PARTITION BY client ORDER BY data) AS urmatoarea,
DATEDIFF(LEAD(data) OVER (PARTITION BY client ORDER BY data), data) AS zile
FROM comenzi
ORDER BY client, data;
Rezultat
+--------+------------+------------+------+
| client | data | urmatoarea | zile |
+--------+------------+------------+------+
| Ana | 2026-09-01 | 2026-09-20 | 19 |
| Ana | 2026-09-20 | 2026-10-15 | 25 |
| Ana | 2026-10-15 | NULL | NULL |
| Dan | 2026-10-01 | NULL | NULL |
+--------+------------+------------+------+
Greșeli frecvente
- Te aștepți ca ultimul rând să aibă o valoare. Nu există rând următor, deci rezultatul este
NULL, dacă nu dai o valoare implicită.
Comenzi înrudite
LAG(): Valoarea din rândul anterior (sau cu N rânduri înainte), ca să compari cu perioada trecută.LAST_VALUE(): Ultima valoare din fereastră; are nevoie de un cadru care să includă toate rândurile.DATEDIFF(): Numărul de zile dintre două date (data1 – data2), ignorând orele.