sql - 使用主查询的字段计算子查询中的字段
问题描述
我正在尝试使用 SQL 计算产品的失效:
SELECT DISTINCT ID_NO, START_DT, END_DT, TERM_NO
FROM DB1.TABLE1
ORDER BY ID_NO, START_DT;
当 ID 有第二个任期时,我想计算 LAPSE。这将是END_DT
第 1 学期和START_DT
第 2 学期之间的天数。
我可以在excel中轻松做到这一点。但我是编写任何高级 SQL 的新手。我可以得到一些方向或任何样本来实现这一目标吗?我试图谷歌,但我很难想出正确的搜索词组。
解决方案
你可以用一个简单的左自连接来做到这一点:
select
t.*, t.start_dt - tt.end_dt as lapse
from tablename t left join tablename tt
on tt.id_no = t.id_no and tt.term_no = 1 and t.term_no = 2
您可以将ON
条款更改为:
on tt.id_no = t.id_no and t.term_no - tt.term_no = 1
如果列中还有其他值,termo_no
例如1, 2, 3, 4....
请参阅演示。
结果:
ID_NO | START_DT | END_DT | TERM_NO | LAPSE
:------- | :-------- | :-------- | ------: | ----:
48965787 | 13-DEC-17 | 13-DEC-18 | 1 |
48965787 | 30-DEC-18 | 13-DEC-19 | 2 | 17
57896248 | 17-JAN-18 | 17-JAN-19 | 1 |
57896248 | 17-JAN-19 | 17-JAN-20 | 2 | 0
78515698 | 16-JUN-18 | 16-JUN-19 | 1 |
78515698 | 01-AUG-19 | 16-JUN-20 | 2 | 46
推荐阅读
- python - (顺便说一句,没有错误)为什么我的清除命令不起作用?
- python - 如何使用 CMake 构建 Python 扩展模块?
- bash - 在 ubuntu 上的 bash 中运行循环,预期为 1,2,3,...n 但得到 {0..10}
- python - Firebase 实时数据库添加/删除/更新/检索数据
- imagemagick - 使用缺失文件创建固定大小的图像蒙太奇
- android - 以编程方式在 Android 11 上启用 USB 网络共享
- xamarin.forms - 为标签页标签使用字体真棒图标
- javascript - 使用 Javascript 从段落中删除单词
- javascript - 我想从系列中删除值,以便图表不会混乱如何做到这一点
- c++ - constexpr 是新的内联吗?