Teradata Case条件按ID和Date检查



多条记录中有相同的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

相关内容

  • 没有找到相关文章

最新更新