【发布时间】:2019-05-18 14:35:35
【问题描述】:
我有下表和查询,但没有给出正确的结果。
JOB 表有 Open、Finish 和 Closed 日期。
现在我需要按每个日期和位置提取所选日期组之间的打开、完成和关闭作业的计数。
请帮助我得到如下预期结果中的结果
+-------+-----------+------------+-----------+----------+
| JOB_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 |
+-------+-----------+------------+-----------+----------+
查询:
SELECT count(DateOpen) as Opened,
count(DateFinish) as Finised,
count(DateClose) as Closed,
(DateOpen) as Date
FROM JOBS
WHERE DateOpen BETWEEN '12/16/2018' AND DATEADD(DAY, 1, '12/17/2018')
group by DateOpen
预期结果:
+-----------+------+----------+--------+----------+
| Date | Open | Finished | Closed | Location |
+-----------+------+----------+--------+----------+
| 16-Dec-18 | 2 | 0 | 0 | A |
| 16-Dec-18 | 0 | 0 | 1 | D |
| 17-Dec-18 | 1 | 0 | 0 | C |
| 17-Dec-18 | 1 | 0 | 0 | E |
+-----------+------+----------+--------+----------+
【问题讨论】:
-
当前输出是多少?
-
能否粘贴查询生成数据
-
如何通过状态区分 JOB_id 101 和 102 ?两者在 DateFinished 和 DateClosed 中都有相同的日期
-
为什么您的日期列还不是 DATE 类型?
-
@SalmanA BETWEEN
标签: sql sql-server datetime sql-server-2012 sql-server-2014