sql-server - 为具有公共字段的记录分组第一个开始日期和最后一个结束日期
问题描述
这是我的表格数据的摘录:
|deviceid | |failcount| started | ended |
| a1078 | | 2 | 2020-12-07 14:51:33 | 2020-12-07 17:30:16|
|a1006 | | 2 | 2020-12-09 15:58:01 | 2020-12-09 23:59:59|
|a1006 | | 2 | 2020-12-10 00:00:00 | 2020-12-10 16:40:02|
|a136 | | 71 | 2020-12-18 10:12:19 | 2020-12-18 23:59:59|
|a136 | | 71 | 2020-12-19 00:00:00 | 2020-12-19 04:27:23|
|a1078 | | 36 | 2020-12-21 10:07:09 | 2020-12-21 14:36:40|
我想要得到的是获取每个 deviceid 的最早开始日期和最晚结束日期,但仅针对相同的失败计数。failcount 数是每个 deviceid 的失败数,因此多个 deviceid 可以具有相同的 failcount 数(应该很少)。
这就是我想要达到的目的:
|deviceid| |failcount| | started | | ended |
|a1078 | | 2 | | 2020-12-07 14:51:33 | |2020-12-07 17:30:16|
|a1006 | | 2 | |2020-12-09 15:58:01 | |2020-12-10 16:40:02|
|a136 | | 71 | |2020-12-18 10:12:19 | |2020-12-19 04:27:23|
|a1078 | | 36 | | 2020-12-21 10:07:09 | |2020-12-21 14:36:40|
我已经尝试过最小/最大的变化,但无法弄清楚如何防止来自同一设备 ID 的不同失败计数被组合 - 例如,在上面的设备 ID a1078 中,我不希望失败计数 2 的开始和结束对于失败计数 36。
到目前为止,我所拥有的是这个,但它为同一个 deviceid 组合了不同的失败计数:
select deviceid
, min(started) as started
, max(started) as ended
from dayfail
where eventno = '600509'
and Convert(char(6),started, 112) = '202012'
group by deviceid
提前感谢这个 sql 新手的任何帮助;)
解决方案
推荐阅读
- javascript - 使用 twig 变量设置 chart.js 数据
- r - 根据 R 中的条件创建一个新的 Timepoint 列
- python-3.x - 有没有办法打印显示在 tkinter 标签上的图像?
- php - 将上传文件与 laravel 文件放在同一位置会造成安全漏洞吗?
- react-native - 任何 https 请求在使用 axios 发布 ReactNative 时都不起作用
- swift - SwiftUI 将字符串转换为可发送的 CSV
- powershell - 如何使用 Powershell 事件检测 Windows 中哪些进程修改了文件?
- r - 如何为来自不同数据集的多个变量创建标签和级别
- javascript - node.js 中的多线程/集群,
- html - 在页面中向下滚动时如何显示图标?