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

Oracle SQL Finding specific column value in data set

我问的是如何找到我想找到的值。

我的数据集如下所示

(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.

使用LEAD window 函数根据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'