在 oracle 中向 select 查询结果日期添加天数
Adding days to the select query result dates in oracle
select from_date_su_rela,to_date_su_rela 来自 RELATION_T;
但预期是从第一行开始减少 -56 天 from_date_su_rela,并将 +56 天添加到最后(第 3 行)to_date_su_rela。如下
我将查询写为,
select from_date_su_rela-56,to_date_su_rela+56 来自 RELATION_T;但是它从所有行中添加和减少天数,如下所示,
如何使它如上图 2 那样工作。
一个选择是使用 row_number
分析函数对数据进行升序和降序排序以找到第一行和最后一行,然后在 case
语句中执行加法和减法
select case when rn_asc = 1
then from_date_su_rela - 56
else from_date_su_rela
end from_date_su_rela,
case when rn_desc = 1
then to_date_su_rela + 56
else to_date_su_rela
end to_date_su_rela
from (
select from_date_su_rela,
to_date_su_rela,
row_number() over (order by from_date_su_rela desc) rn_desc,
row_number() over (order by from_date_su_rela asc) rn_asc
from relation_t
)
select from_date_su_rela,to_date_su_rela 来自 RELATION_T;
但预期是从第一行开始减少 -56 天 from_date_su_rela,并将 +56 天添加到最后(第 3 行)to_date_su_rela。如下
我将查询写为,
select from_date_su_rela-56,to_date_su_rela+56 来自 RELATION_T;但是它从所有行中添加和减少天数,如下所示,
如何使它如上图 2 那样工作。
一个选择是使用 row_number
分析函数对数据进行升序和降序排序以找到第一行和最后一行,然后在 case
语句中执行加法和减法
select case when rn_asc = 1
then from_date_su_rela - 56
else from_date_su_rela
end from_date_su_rela,
case when rn_desc = 1
then to_date_su_rela + 56
else to_date_su_rela
end to_date_su_rela
from (
select from_date_su_rela,
to_date_su_rela,
row_number() over (order by from_date_su_rela desc) rn_desc,
row_number() over (order by from_date_su_rela asc) rn_asc
from relation_t
)