我有一个名为SR_Audit的表,它保存了我们帮助台票务系统中每个票证的所有更新。
该表的格式如下所示:
|-----------------|------------------|------------|------------|------------|
| SR_Audit_RecID | SR_Service_RecID | Audit_text | Updated_By | Last_Update|
|-----------------|------------------|------------|------------|------------|
|........PK.......|.......FK.........|
我构建了下面的查询,以我想要的格式为我提供了所需的适当输出。也就是说,我希望测量每个工作人员在一个月内每天完成的门票数量。
select SR_audit.updated_by, CONVERT(CHAR(10),SR_Audit.Last_Update,101) as DateOfClose, count (*) as NumberClosed
from SR_Audit
where SR_Audit.Audit_Text LIKE '%to "Completed"%' AND SR_Audit.Last_Update >= DATEADD(day, -30, GETDATE())
group by SR_audit.updated_by, CONVERT(CHAR(10),SR_Audit.Last_Update,101)
order by CONVERT(CHAR(10),SR_Audit.Last_Update,101)
然而,这个查询有一个弱点,我想克服它。
一张票一旦完成就可以重新打开,这意味着它可以再次完成。这使得工作人员可以通过重新打开一张票并再次完成来人为地夸大他们的分数,从而使他们每次完成的票数增加一张。
该表有一个名为SR_Service_RecID的字段,它本质上是Ticket编号。我想在查询中加入一个条件,这样无论完成多少次,每张票都只计算一次,同时仍然遵守当前的where子句。
我尝试过子查询和其他一些方法,但都没能得到我想要的结果。
如有任何协助,我们将不胜感激。
干杯。
Courtenay
用作
COUNT(DISTINCT(SR_Service_RecID)) as NumberClosed
使用:
COUNT(DISTINCT SR_Service_RecID) as NumberClosed