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'
我问的是如何找到我想找到的值。
我的数据集如下所示
(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'