多条记录中有相同的id,但起始日期和结束日期跨度不同
我需要写一个teradata sql case条件来检查ID,其开始日期是当前月份,并与前一个记录的结束日期进行比较
案例条件:我需要编写一个teradata sql case条件来检查ID,其开始日期是当前月份,并与前一个记录的结束日期进行比较,如果有大于3个月的差异,那么打印'是'否则'否'
仅供参考:下面的activerec字段是,如果ID有当前月的开始日期,它显示为yes。
表数据示例如下:
ID startdate enddate name. activerec
101 03-01-2023. 11-30-2023 Lee yes
101 02-01-2023 02-28-2023 Lee No
101 12-01-2022 12-31-2022 Lee No
102 03-01-2023 03-31-2023 Mark yes
102 10-01-2022. 10-31-2022 Mark. No
我需要答案如下:
ID startdate enddate name activerec
101 03-01-2023. 11-30-2023 Lee yes
101 02-01-2023 02-28-2023 Lee No
101 12-01-2022 12-31-2022 Lee No
102 03-01-2023 03-31-2023 Mark yes
102 10-01-2022. 10-31-2022 Mark. No
Flag
No
No
No
Yes
No
No
这里101 ID的起始日期为当前月份,前一个记录日期跨度的结束日期为02-28-2023。我需要对比一下本月的起始日期03-01-2023和02-28-2023,看是否有三个月的差异。这个ID没有3个月的差异,所以我需要打印"No"。
102 ID的起始日期为当前月份,之前的记录结束日期为2022年10月31日,两者相差超过3个月。因此,我需要将其视为新成员并打印为'Yes'。
I Couldn't do it at all
这是对SQL的翻译:
case -- start date is current month
when startdate = trunc(current_date, 'mm')
-- difference greater than 3 months
and add_months(lag(enddate) over (partition by id order by startdate), 3)
< startdate
then 'y'
else 'n'
end