sql - SQL COUNT 具有相同或更小的值的所有行
问题描述
我对 Access 和 SQL 很陌生。我有两列日期。我试图为第一列中的每个日期获取第一列中具有相同或更早日期和第二列中较晚日期的单元格数量。
我的表:
|---------------------|---------------------|------------------|
| Incident Nr. | Incident Date | Completion Date |
|---------------------|---------------------|------------------|
| 1 | 25.09.2007 | 31.10.2007 |
|---------------------|---------------------|------------------|
| 2 | 26.09.2007 | 01.11.2007 |
|---------------------|---------------------|------------------|
| 3 | 26.09.2007 | 04.12.2007 |
|---------------------|---------------------|------------------|
| 4 | 30.11.2007 | |
|---------------------|---------------------|------------------|
我的目标:
|---------------------|------------------|
| Date | Open Incidents |
|---------------------|------------------|
| 25.09.2007 | 1 |
|---------------------|------------------|
| 26.09.2007 | 3 |
|---------------------|------------------|
| 30.11.2007 | 2 |
|---------------------|------------------|
- 事件编号 1:没有更早的事件,只有它本身 (25.09.2007)。-> 1。
- 事件编号 2 和 3:三起事件(1x 25.09.2007,2x 26.09.2007),没有完成(截至 2007 年 9 月 26 日的状态)。-> 3。
- 事件编号 4:四个事件,但 1 和 2 已经完成。-> 2。
我尴尬的尝试是:
SELECT [Incident Date], (SELECT COUNT([Incident Date]) FROM MyTable WHERE [Incident Date] <= [Incident Date]) AS [Open Incidents]
FROM MyTable
GROUP BY [Incident Date];
非常感谢!
解决方案
我认为你的方法实际上非常好。但 。. .
SELECT t.[Incident Date],
(SELECT COUNT(*)
FROM MyTable as t2
WHERE t2.[Incident Date] <= t.[Incident Date] AND
(t2.[Completion Date] >= t.[Incident Date] OR t2.[Completion Date] IS NULL)
) AS [Open Incidents]
FROM MyTable as t
GROUP BY t.[Incident Date];
请注意表别名的使用,以便清楚列引用是针对内部查询还是外部查询。
推荐阅读
- c# - 为什么 Aspose.PDF 程序集会多次加载到 appDomain 中?
- django - 通过 ModelForm 创建的对象未显示在列表中
- selenium-webdriver - 我正在尝试单击搜索按钮,但未单击,并且在控制台中没有任何异常
- javascript - 从 React 中第一个选择的选项中获取第二个选择的值
- ruby-on-rails - 如何在rails中显示has_one关联的值?
- ios - 如何使用 TextField SwiftUI 的 TouchesBegan 和 TouchesEnd 在外部单击时退出键盘
- c++ - 查找每个数组元素的频率
- ssh - 我可以将 SSH 会话从编程语言传递到系统终端吗?
- xcode - 我们能否在新的 macOS Catalina 10.15 beta 中同时使用 Xcode 10.2.1 和 Xcode 11 beta
- node.js - 如何避免在 package.json 中写入长路径名