【发布时间】:2018-12-17 16:20:25
【问题描述】:
我有以下查询来查找基于不同日期字段的计数。
我怎样才能得到如下预期的结果?
显示的查询没有像示例结果一样返回实际计数。
+-------+-----------+------------+-----------+----------+
| WO_id | DateOpen | DateFinish | DateClose | Location |
+-------+-----------+------------+-----------+----------+
| 100 | 16-Dec-18 | 18-Dec-18 | 19-Dec-18 | A |
| 101 | 16-Dec-18 | 18-Dec-18 | 19-Dec-18 | A |
| 102 | 17-Dec-18 | 19-Dec-18 | 20-Dec-18 | C |
| 103 | 10-Dec-18 | 11-Dec-18 | 16-Dec-18 | D |
| 104 | 17-Dec-18 | 19-Dec-18 | 18-Dec-18 | E |
+-------+-----------+------------+-----------+----------+
查询(选择标准:仅 2018 年 12 月 16 日数据):
SELECT
COUNT(DateOpen) AS Opened,
COUNT(DateClose) AS closed,
COUNT(DateFinish) AS finished,
Location
FROM
JOB
WHERE
JOB.DateOpen BETWEEN '12/16/2018' AND DATEADD(DAY, 1, '12/16/2018')
OR JOB.DateClose BETWEEN '12/16/2018' AND DATEADD(DAY, 1, '12/16/2018')
OR JOB.DateFinish BETWEEN '12/16/2018' AND DATEADD(DAY, 1, '12/16/2018')
GROUP BY
Location
预期结果:
+--------+----------+--------+----------+
| opened | finished | closed | Location |
+--------+----------+--------+----------+
| 2 | 0 | 0 | A |
| 0 | 0 | 1 | D |
+--------+----------+--------+----------+
【问题讨论】:
-
您的问题到底是什么?你还没问过。
-
我怎样才能得到预期结果中的结果
-
这里要小心。这些日期字符串 cab 会根据您的连接日期格式设置进行不同的解释。最好对字符串文字使用明确的符合 ANSI 标准的 YYYYMMDD 格式。
标签: sql sql-server tsql sql-server-2014