Comment puis-je demander à la fonction LAG d'obtenir la dernière valeur "not null"?Fonctions LAG et NULLS
Par exemple, voir ma table ci-dessous où j'ai quelques valeurs NULL sur les colonnes B et C. Je voudrais remplir les nulls avec la dernière valeur non nulle. J'ai essayé de le faire en utilisant la fonction LAG, comme ceci:
case when B is null then lag (B) over (order by idx) else B end as B,
mais cela ne fonctionne pas tout à fait quand j'ai deux valeurs nulles ou plus dans une rangée (voir la valeur NULL sur la ligne colonne C 3 - I J'aimerais que ce soit 0.50 comme l'original).
Toute idée comment puis-je y parvenir? (il ne doit pas être en utilisant la fonction LAG, d'autres idées sont les bienvenues)
Quelques hypothèses:
- Le nombre de lignes est dynamique;
- La première valeur sera toujours non nulle;
- Une fois que j'ai un NULL, est NULL tout jusqu'à la fin - donc je veux le remplir avec la dernière valeur.
Merci
Itzik Ben-Gan a écrit un blog sur un problème: http://sqlmag.com/sql-server/how-previous-and-next-condition. Unfortunatley SQL Server ne supporte pas l'option 'IGNORE NULLS' dans' LAST_VALUE', alors c'est simple: 'LAST_VALUE (B IGNORE NULLS) OVER (ORDER BY idx)'. – dnoeth