【问题标题】:Continuous dates to create case #创建案例的连续日期#
【发布时间】:2023-03-21 19:28:01
【问题描述】:

我正在尝试根据客户 ID 和开始和结束日期添加案例#。只要客户的日期范围没有中断,就会应用相同的案例#。见样本数据。有没有办法在 Teradata SQL 中实现这一点?

【问题讨论】:

  • 我看到的是图像,而不是样本数据。 (该图像确实显示了示例数据。)强烈最好将数据作为插入或简单的文本表提供(例如,使用此 ozh.github.io/ascii-tables
  • 研究 Teradata 规范化和周期功能,将这些连续的行合并在一起会更简单。
  • 如果这些范围重叠怎么办,例如结束日期 2018-04-18 和下一个开始日期 2018-14-16?

标签: sql teradata teradata-sql-assistant


【解决方案1】:

您可以使用lag() 和累积和获得一个数字:

select t.*,
       sum(case when enddate = prev_enddate + interval '1' day
                then 0 else 1
           end) over (partition by customerid order by startdate
                     ) as result
from (select t.*,
             lag(enddate) over (partition by customerid order by startdate) as prev_enddate
      from t
     ) t;

【讨论】:

猜你喜欢
  • 2022-11-25
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 2021-08-19
  • 2017-05-26
  • 1970-01-01
相关资源
最近更新 更多