Come posso dire alla funzione LAG di ottenere l'ultimo valore "non null"?Funzioni LAG e NULLS
Ad esempio, vedere la mia tabella qui sotto dove ho alcuni valori NULL sulla colonna B e C. Mi piacerebbe riempire i valori null con l'ultimo valore non nullo. Ho cercato di farlo usando la funzione GAL, in questo modo:
case when B is null then lag (B) over (order by idx) else B end as B,
ma che non funziona abbastanza quando ho due o più nulli in una fila (vedere il valore NULL sulla colonna C riga 3 - I 'mi piacerebbe essere 0.50 come l'originale).
Qualche idea su come ottenerlo? (non deve essere utilizzando la funzione GAL, altre idee sono benvenute)
Qualche ipotesi:
- Il numero di righe è dinamico;
- Il primo valore sarà sempre non nullo;
- Una volta che ho un NULL, è NULL tutto fino alla fine, quindi voglio riempirlo con l'ultimo valore.
Grazie
Itzik Ben-Gan ha scritto un blog su un problema: http://sqlmag.com/sql-server/how-previous-and-next-condition. Unfortunatley SQL Server non supporta l'opzione 'IGNORE NULLS' in' LAST_VALUE', quindi è semplice: 'LAST_VALUE (B IGNORE NULLS) OVER (ORDER BY idx)'. – dnoeth