【问题标题】:How to compare dates of two different columns for different records?如何比较不同记录的两个不同列的日期?
【发布时间】:2021-12-18 19:11:36
【问题描述】:

我有一个表,其中包含每个用户的两种不同状态,“已声明”和“已退回”。我想比较 'returned' 状态的 'status_datetime_update' 日期,并检查它是否大于或小于先前状态('claimed')的 expiration_datetime。

我知道 transaction_id 1111 和 1244 小于并且 transaction_id 3312 大于。

有什么办法可以做到吗?

create or replace table TBL_A (
    user_name varchar, country varchar, status varchar, transaction_id varchar, status_datetime_update date, expiration_datetime date
);
insert into TBL_A values 
('Rachel', 'USA', 'CLAIMED','1111', '2021-10-10', '2021-10-15'),
('Rachel', 'USA', 'RETURNED','1111', '2021-10-14','2021-10-15'),
('Ross', 'PAN', 'CLAIMED','3312','2021-10-12','2021-10-20'),
('Ross', 'PAN', 'RETURNED','3312', '2021-10-25','2021-10-20'),
('Chandler', 'UK', 'CLAIMED','1244','2021-09-11','2021-09-14'),
('Chandler', 'UK', 'RETURNED', '1244','2021-09-12','2021-09-14');

【问题讨论】:

    标签: sql snowflake-cloud-data-platform snowflake-schema


    【解决方案1】:

    这样的?

    select *, 
    LAG( expiration_datetime ) OVER (PARTITION BY transaction_id ORDER BY status) <= status_datetime_update expired
    from tbl_a;
    

    顺便说一句,您的行已经包含相同的 expire_datetime 值。为什么不使用它?

    【讨论】:

      猜你喜欢
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多