繁体   English   中英

使用滞后 function 后如何用以前的值替换当前 null 值

[英]How to replace current null value with previous values after using lag function

我面临的问题是通过用开放列值减去先前的关闭列值来替换我从滞后 function 获得的差异列上的当前 null 值。 我想跳过当前的 null 值并将所有以前的值从 diff 列提高 1 级

我的查询

SELECT DATE_FORMAT(date, '%m/%d/%Y') as Dates, Open, close, lag(open) OVER (ORDER BY date desc ) - close  as diff FROM example  

当前结果

Dates,         Open,   Close,    Diff
'04/18/2022', '301.07', '298.82', NULL
'04/14/2022', '303.75', '301.86', '-0.79'
'04/13/2022', '307.28', '302.67', '1.08'
'04/12/2022', '306.58', '308.08', '-0.80'
'04/11/2022', '313.09', '308.96', '-2.38'

预期的期望结果

Dates,         Open,   Close,    Diff
'04/18/2022', '301.07', '298.82', '-0.79'
'04/14/2022', '303.75', '301.86', '1.08'
'04/13/2022', '307.28', '302.67', '-0.80'
'04/12/2022', '306.58', '308.08', '-2.38'
'04/11/2022', '313.09', '308.96', 1.40
'04/08/2022', '308.00', '311.69', '0.43'

在此处输入图像描述

你为什么不这样做

SELECT 
DATE_FORMAT(date, '%m/%d/%Y') as Dates, 
Open, close, 
Open- lead(close) OVER (ORDER BY date desc )  as diff 
FROM example  

基本上我们从下一行中为每个人提供接近的数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM