【发布时间】:2018-06-14 09:26:42
【问题描述】:
我有一个问题,我试图显示一天 I.E. 的特定时间范围内的升级。我想根据升级的优先级查看今天的所有升级。
SELECT tas.TASK_ID as TICKET,
tas.TASKNAME,
chg.ASLOGID as ASSIGNEE,
DATEADD(SECOND, logs.SUBMIT_DATE , '19700101') as SUBMIT_DATE,
tas.PRIORITY,
FROM dbo.TASK as tas,
dbo.CHANGE as chg,
dbo.WORKLOG as logs
WHERE chg.ASLOGID in ('Some Users')
and tas.TASKNAME like ('Escalation%')
and chg.CHANGE_ID = tas.TASK_ID
and logs.CHANGE_ID = chg.CHANGE_ID
and logs.SUBMIT_DATE =
(Select MAX(logs2.SUBMIT_DATE) from dbo.WORKLOG as
logs2 where logs2.CHANGE_ID = logs.CHANGE_ID)
and DATEADD(SECOND, logs.SUBMIT_DATE , '19700101') < DATEADD(DD, CASE WHEN
tas.PRIORITY = 0 THEN -1
WHEN tas.PRIORITY = 1 THEN -2
WHEN tas.PRIORITY = 2 THEN -4
ELSE -6 END, CURRENT_TIMESTAMP)
Order by SUBMIT_DATE
我的查询似乎主要工作,但我不确定 Second Max Select 是否正常工作。发生的情况是,我可以在一天开始时看到一些升级,但是一旦它们在当天晚些时候被清除,屏幕上就会弹出另一个 E.G.昨天16:30左右,屏幕上出现了以下升级。据我所知,PRIORITY 没有任何变化。
+-----------------+-------------+----------+---------------------+----------+
| TICKET | TASKNAME | ASSIGNEE | SUBMIT_DATE | PRIORITY |
+-----------------+-------------+----------+---------------------+----------+
| INC000012345678 | Escalation | User1 | 11/06/2018 09:41:51 | 1 |
+-----------------+-------------+----------+---------------------+----------+
正如我所说的,我正在尝试当天可能出现的所有升级,我很欣赏这个问题可能与 dateadd 秒数有关,然后尝试倒数 dateadd 天数,但我本以为上面会有09:41 后突然出现?我对此比较陌生,所以我可能对它的工作原理有点天真。
感谢您提出正确的建议,并在此先感谢您。
【问题讨论】:
-
我想我可能已经用 CAST as DATE 解决了这个问题
标签: sql sql-server-2008-r2 dateadd