【发布时间】:2015-07-31 19:26:56
【问题描述】:
我有一个存储工单状态变化的表。一些门票在关闭后重新打开。并且在某些情况下(下面的示例)会重新打开几次。
Ticket SEQUENCE NEWVALUE OLDVALUE TIMESTAMP
5879 15870 REQUEST NULL 2015-06-10 12:13:28.000
5879 16256 Pending REQUEST 2015-06-11 14:26:38.000
5879 21642 Open Pending 2015-07-02 13:32:47.000
5879 21943 Pending Open 2015-07-06 09:55:37.000
5879 23195 Open Pending 2015-07-09 15:00:47.000
5879 24917 Pending Open 2015-07-17 15:09:28.000
5879 25903 Closed Pending 2015-07-22 11:13:03.000
5879 25940 Open Closed 2015-07-22 12:56:05.000
5879 25972 Pending Open 2015-07-22 13:54:30.000
5879 25996 Closed Pending 2015-07-22 14:31:05.000
5879 26484 Pending Closed 2015-07-24 14:43:28.000
5879 26776 Closed Pending 2015-07-27 11:34:00.000
我正在尝试确定上次关闭工单的时间。但我什至不知道如何开始这个查询。有人可以提供线索吗?非常感谢!
我想要得到的最终结果是这样的:
Date Tickets Submitted Tickets Closed
2015-06-01 123 44
2015-06-02 125 45
2015-06-03 147 51
2015-06-04 190 58
2015-06-05 132 38
2015-06-06 93 28
2015-06-07 126 30
2015-06-08 167 50
我目前的查询是:
SELECT CAST(SUBMITDATE as date) as 'Date'
,COUNT(*) as [Tickets Submitted]
,SUM(CASE WHEN NEWVALUE = 'Closed' THEN 1 ELSE 0 END) as [Tickets Closed]
FROM dbo.MasterTable
FULL OUTER JOIN FIELDHISTORY
ON MasterTable.Ticket = FIELDHISTORY.Ticket
WHERE SUBMITDATE >= '2015-06-01'
AND SUBMITDATE < '2015-06-08'
GROUP BY CAST(SUBMITDATE as date)
ORDER BY CAST(SUBMITDATE as date)
这个查询的问题是它没有显示在那个特定日期关闭了多少票。它仅显示在特定日期打开的票证池中关闭的票证数量。换句话说,从上面的示例中,2015 年 6 月 1 日,创建了 123 个工单,其中 44 个工单目前已关闭。如果有人要关闭 6 月 1 日创建的另一张工单,则 44 个已关闭工单的数字可能会发生变化。
希望这不会太混乱! =D
【问题讨论】:
-
您的结果应该是什么样的?
-
你试过什么?如果一张票被关闭并重新打开而不是再次关闭怎么办?你还在数吗?
-
如果一张票被关闭然后重新打开..并且当前仍然打开,则不能算作关闭。
-
你能显示整个架构吗?您显示一个表,但在您的查询中还有其他表。
标签: sql sql-server-2012 ticket-system