[英]How to get the last non null value from the MYSQL table with the LAG
我正在绑定一个 LAG 函数来从表中检索最后一个非空值来替换一行中的空值。 我正在使用的代码:
SELECT ticket_id, business_area, priority ,client_name,
closed_date, closed_date_id,Next_Create_date,
case
when Next_Create_date is null and Ticket_ID = 0
then LAG(Next_Create_date)
over (partition by ticket_id, business_area,
priority, client_name,
closed_date, Closed_Date_ID
order by Next_Create_date desc
)
else Next_Create_date
end Next_Create_date2
from ams_auto.No_Issue_Time_NM a
order by closed_date desc ;
这些是结果:
每个黄色 Next_Created_Date2 字段都应该真正具有最后一个非空值。 在这种情况下,这将是 '2021-07-16 00:44:17' 但由于某种原因它不起作用。
关于如何实现这一目标的任何想法?
我没有看到任何测试数据可以玩,所以这是一个简单的例子
with qq(q) as (
select 1 union all
select 2 union all
select null union all
select 3
)
select q,
lag(q, 1, 'nothing to show') over(order by q desc)
from qq;
您可以对数据进行排序并最终移动空值 - 只需将其降序排序(不要问我为什么)。
这是结果
q | 落后 |
---|---|
1 | 没什么可展示的 |
2 | 1 |
3 | 2 |
3 |
这是要玩的dbfiddle
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.