我有一张桌子(如下所示),有两列日期。我试图在两个列中匹配年份。如果一列中的年份为n
,则代码会将其他列中相应的年份值预期为n
,(n - 1)
或(n - 2)
。例如,如果左列值2016,其右列对应应为2014年,2015年或2016年,否则应将其作为异常值计算。
Date 1 | Date 2
-----------+----------
31-10-2016 |31-10-2014
31-10-2016 |31-10-2015
31-10-2016 |31-10-2016
31-10-2016 |31-10-2016
31-10-2016 |31-10-2015
31-10-2016 |31-10-2013
31-10-2016 |31-10-2013
答案 0 :(得分:0)
以下查询将执行:
select (case when extract(year from date2) between extract(year from date1 )-2 and extract(year from date1) then 'valid' else 'outlier' end)tagDt
from your_table
您只需从两个日期中提取年份并应用正常的案例操作。
<强>示例:强>
select date '2016-10-31' date1, '2014-10-31' date2, extract(year from date '2016-10-31') y1, extract(year from date '2014-10-31') y2,
(case when extract(year from date '2013-10-31') between extract(year from date '2016-10-31')-2 and extract(year from date '2016-10-31') then 'valid' else 'outlier' end)tagDt
<强>输出:强>
"2016-10-31";"2014-10-31";2016;2014;"outlier"