【问题标题】:Compare rows in different column Teradata比较不同列 Teradata 中的行
【发布时间】:2017-08-16 16:05:51
【问题描述】:

我需要将 1 列中的值与 2 列中的先前值进行比较。例如,我有表:

id | create_date | end_date 1 | 2016-12-31 | 2017-01-25 2 | 2017-01-26 | 2017-05-21 3 | 2017-05-22 | 2017-08-26 4 | 2017-09-01 | 2017-09-02

我需要比较 id = 2 的 create_date 和 id = 1 的 end_date

比较 id = 3 的 create_date 和 id = 2 的 end_date 等。

结果:告诉我有 create_date (id = n) end_date (id = n-1) + 间隔 '1' 天的 id

我应该使用 lag() 函数吗?我怎么能比较它?我应该使用哪个功能以及如何使用?

谢谢

【问题讨论】:

    标签: teradata


    【解决方案1】:

    Teradata 没有滞后/领先,但您仍然可以获得相同的功能:

    select
    id,
    create_date,
    end_date,
    max(end_date) over (order by id between 1 preceding and 1 preceding) as prev_end_date
    ...
    qualify
    create_date <> prev_end_date + INTERVAL '1' day;
    

    【讨论】:

    • 感谢您的回答。但我不能在哪里使用分析功能。我只是把它放到子选择中 :) 它有效,非常感谢。
    • @monika01:不需要 Subselect,Teradata 支持 QUALIFY 过滤 OLAP 函数的结果。
    猜你喜欢
    • 2014-11-28
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 2021-07-02
    相关资源
    最近更新 更多