繁体   English   中英

如何使用LAG从MYSQL表中获取最后一个非空值

[英]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.

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