gpt4 book ai didi

sql - 获取日期差为一的行

转载 作者:太空狗 更新时间:2023-10-30 01:59:25 25 4
gpt4 key购买 nike

我在 SQLFiddle 中定义了下表和行

我需要从产品表中选择两行 start_datenvl(return_date,end_date) 为 1。即当前行的 start_date 和上一行的 nvl(return_date,end_date) 应该是一个

例如

PRODUCT_NO TSH098PRODUCT_REG_NO FLDGEND_DATE2012 年 8 月 15 日 并且PRODUCT_NO TSH128PRODUCT_REG_NO FLDG start_date2012 年 8 月 16 日,因此仅相差一天。

如何使用 sql 获得所需的输出。

非常感谢任何帮助。

谢谢

最佳答案

您可以使用 lag分析函数以访问当前位置之前给定物理偏移量处的行。根据您的排序顺序,它可能看起来像这样(虽然不是那么优雅)。

select *
from products p
join (select *
from(select p.Product_no
, p.Product_Reg_No
, case
when (lag(start_date, 1, start_date) over(order by product_reg_no)-
nvl(return_date, end_date)) = 1
then lag(start_date, 1, start_date)
over(order by product_reg_no)
end start_date
, End_Date
, Return_Date
from products p
order by 2,1 desc
)
where start_date is not null
) s
on (p.start_date = s.start_date or p.end_date = s.end_date)
order by 2, 1 desc

SQL FIddle DEMO

关于sql - 获取日期差为一的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12445414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com