sql - 如何在同一表组的不同行组之间按 1 值计算
问题描述
我有表:
Days Date numberfield
1 2020-04-09 5500055
2 2020-04-30 5500055
3 2020-04-11 5500055
55 2020-04-12 5500055
56 2020-04-13 5500055
我需要导出在特定日期相差大于 2 天的数字字段。给我所有在 4 月 11 日和 12 日两天以上有差异的数字字段。2020 年。
我已经从这里尝试了几种帮助,但对我不起作用。感谢您的意见...</p>
有一个查询我尝试过,并且可以工作,但没有优化。
select a.date, b.date, a.numberfield, b.numberfield, b.days-a.days as difference from
(select numberfield, days, date from #tmp where date = '2020-04-11' ) a,
(select numberfield, days, date from #tmp where date = '2020-04-12' ) b
where a.numberfield = b.numberfield
order by 3
结果是:
date date numberfield numberfield difference
2020-04-11 2020-04-12 5500055 5500055 1
2020-04-11 2020-04-12 5500065 5500065 1
2020-04-11 2020-04-12 5500075 5500075 1
2020-04-11 2020-04-12 5500085 5500085 1
2020-04-11 2020-04-12 5500095 5500095 562
让我解释一下,至少尝试解释一下:) 我想获得连续两天之间差异大于 1、>=2 的数字字段。
像这个 5500095 例子。所以只给我有差异> 1的数字字段
解决方案
只需:join
_where
select a.date, b.date, a.numberfield, b.numberfield,
(b.days - a.days) as difference
from #tmp a join
#tmp b
on a.numberfield = b.numberfield
where a.date = '2020-04-11' and b.date = '2020-04-12' and
abs(b.days - a.days) > 1
order by 3;
不需要子查询。. . 它们也不是特别有用。
推荐阅读
- r - 在数据框的列上使用 sapply?-R
- asp.net - API逻辑架构循环依赖
- laravel - 为什么提交表单后页面保持空白?
- airflow - Airflow 将数据流任务标记为失败,但实际上成功了
- android - 如何在android11上获得本机屏幕录像机的通知?
- flutter - 如何使用(键和值)颤动在列表或映射中添加数据
- swift - Swift simulator looks different from storyboard
- c - C:在 Linux 上显示一个系统通用对话框请求密码
- sql - Extract weight and multiple in SSRS-2012
- java - 如何从 JAVA 中的 JSON 文件中删除元素