我在问如何找到我想要找到的价值。
我的数据集如下所示
(D是最新的时间)
END_DATE | START_DATE | YN_DC
------------------------------
D C Y
C B Y
B A N
在这种情况下,我想找到时间值“B”,这是YN_DC的值从“N”变为“Y”的开始时间
当YN_DC列更改为“Y”时,它将永远不会再次更改为“N”。
如何使用SQL找到值B?
如果我使用C或Java,我可能会发现该值是使用递归函数或其他东西,但我不知道何时尝试在使用SQL时找到它。
答案 0 :(得分:0)
使用LEAD
窗口函数根据start_date的升序获取YN_DC的下一行值。检查当前行的YN_DC值是N
,下一行的值是Y
。
select end_date
from (select d.*, lead(YN_DC) over(order by start_date) as next_yn_dc
from dataset d
) x
where yn_dc='N' and next_yn_dc='Y'