Oracle SQL在数据集中查找特定列值

Oracle SQL在数据集中查找特定列值,sql,oracle,gaps-and-islands,Sql,Oracle,Gaps And Islands,我在问如何找到我想要找到的价值 我的数据集如下所示 (D是最新时间) 在这种情况下,我想找到时间值“B”,它是YN_DC的值从“N”变为“Y”的开始时间 当YN_DC列更改为“Y”时,它将不再更改为“N” 如何使用SQL查找值B 如果我使用C或Java,我可能会在使用递归函数或其他方法时找到该值,但我不知道何时尝试在使用SQL时找到该值。使用window函数根据开始日期的升序获取下一行的ynu DC值。检查当前行的YN_DC值是否为N,下一行的值是否为Y select end_date fro

我在问如何找到我想要找到的价值

我的数据集如下所示

(D是最新时间)

在这种情况下,我想找到时间值“B”,它是YN_DC的值从“N”变为“Y”的开始时间

当YN_DC列更改为“Y”时,它将不再更改为“N”

如何使用SQL查找值B

如果我使用C或Java,我可能会在使用递归函数或其他方法时找到该值,但我不知道何时尝试在使用SQL时找到该值。

使用window函数根据开始日期的升序获取下一行的ynu 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'

您是否尝试过
lead()
?那么您是在寻找最后一行的开始日期,其中YN_DC=Y,结束日期由DESC排序?谢谢您的评论。我将在下周一尝试。你的SQL在评论中的工作非常好。我真的很感谢你的评论,我将带你去了解LEAD和OVER功能。谢谢
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'