微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

子查询计算日期之间的天数

如何解决子查询计算日期之间的天数

查询sql,Oracle

我是子查询的新手,希望能获得一些帮助。我的想法是子查询将首先运行,然后外部查询将基于trans_code ='ABC'的子查询过滤器执行。该查询有效,但是它会从所有交易代码提取所有日期,即trans_code“ ABC”和“ DEF”等。

最终目标是计算日期间的天数。

表结构为:

acct_num    effective_date
1234        01/01/2020
1234        02/01/2020
1234        03/01/2020
1234        04/01/2021

我要执行如下查询

account     Effective_Date  Effective_Date_2   Days_Diff
1234        01/01/2020      02/01/2020         31  
1234        02/01/2020      03/01/2020         29
1234        03/01/2020      04/01/2021         395
1234        04/01/2021                         0

查询

SELECT t3.acct_num,t3.trans_code,t3.effective_date,MIN (t2.effective_date) AS effective_date2,MIN (t2.effective_date) - t3.effective_date AS days_diff
FROM (SELECT t1.acct_num,t1.trans_code,t1.effective_date
      FROM lawd.trans t1
      WHERE t1.trans_code = 'ABC') t3
     LEFT JOIN lawd.trans t2 ON t3.acct_num = t2.acct_num
WHERE t3.acct_num = '1234' AND t2.effective_date > t3.effective_date
GROUP BY t3.acct_num,t3.trans_code
ORDER BY t3.effective_date asc

TIA!

解决方法

使用lead()

select t.*,lead(effective_date) over (partition by acct_num order by effect_date) as next_efffective_date,(lead(effective_date) - effective_date) as diff
from lawd.trans t

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。