首页 > 解决方案 > SQL - 根据日期比较行并转置差异

问题描述

设想:

'HIST'

RID 价值 HIST_DATE
1 V111 2019-01-01
1 V112 2020-02-11
1 V112 2020-03-08
1 V113 2020-04-11
1 V114 2021-03-15
2 V211 2020-04-11
2 V211 2021-03-16
3 V311 2019-05-01
3 V312 2020-01-01

预期输出:

RID VALUE_OLD VALUE_NEW
1 V113 V114

我想显示列 'VALUE' 按 RID 分组的行之间的差异,其中 HIST_DATE 在'2020-03-31''2021-04-01'之间

然后转置“VALUE_OLD”和“VALUE_NEW”列中的不同值。

注意:假设在这些日期之间只能出现 2 个不同的值

甲骨文 SQL

标签: sqloracle

解决方案


假设在这些日期之间只能出现 2 个不同的值

 select distinct RID, 
        first_value(VALUE) over(order by HIST_DATE) VALUE_OLD,
        first_value(VALUE) over(order by HIST_DATE desc) VALUE_NEW
 from HIST
 where HIST_DATE between  date '2020-03-31' and date '2021-04-01'

    

推荐阅读