查询单个列上的区别

时间:2014-02-11 04:52:58

标签: sql distinct

我有一个名为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的字段,该字段本质上是故障单号。我想在查询中添加一个条件,这样每个票证只计算一次,无论其完成多少次,同时仍然遵守当前的where子句。

我已尝试过子查询和其他一些方法但未能得到我想要的结果。

任何帮助都将不胜感激。

干杯。

特尼

2 个答案:

答案 0 :(得分:0)

使用:

COUNT(DISTINCT SR_Service_RecID) as NumberClosed

答案 1 :(得分:0)

用作

 COUNT(DISTINCT(SR_Service_RecID)) as NumberClosed