【发布时间】:2021-07-24 22:00:50
【问题描述】:
请我有以下数据,我需要计算每个 ID 的 Currunt_date 和最大日期之间的日期差异,日期差异的结果将位于最大日期旁边,其他记录返回 NULL。我问是否可以在不加入最大值的情况下使用窗口函数来处理它,因为真正的查询非常复杂并且会获得数百万行的大量数据,我需要对其进行优化以提高查询性能
|ID |Date |
|----+------|
|A |1-Apr |
|A |15-Apr|
|B |1-Mar |
|B |15-Mar|
|C |1-Jan |
|C |15-Jan|
我尝试使用以下查询,但结果与每个日期重复
SELECT ID, DATE, Current_date - Max(Date) over (Partition BY ID ORDER BY DATE DESC) AS DURATION
FROM TBL
但我需要结果如下所示
|ID |Date |Duration|
|----+------+--------|
|A |1-Apr |NULL |
|A |15-Apr|17 |
|B |1-Mar |NULL |
|B |15-Mar|48 |
|C |1-Jan |NULL |
|C |15-Jan|107 |
【问题讨论】:
标签: sql teradata window-functions