SQL查询使用2表联合计算数据中的唯一出现次数

时间:2013-12-06 16:34:28

标签: sql sql-server

我有3张桌子:
ClosedClaims - 此表包含许多字段,最重要的是Spare(触摸声明的第一个人的ID),SpareFinished(他们打开它的日期)和Claim_ID(声明的ID)。

tblAuditing - 此表保存触摸声明的人员的审计跟踪,并且仅包含三个字段;备用(触摸它的人的ID),SpareFinished(他们触摸它的日期)和Claim_ID(触摸声明的ID)。

PROC_LIST - 此表包含用户ID列表,管理员级别及其全名。

我正在尝试创建一个查询,它会告诉我每个人的名字,以及他们触及的声明数量。如果他们多次触及索赔,我只希望将索赔ID计算一次。我有这个SQL字符串:

Select PROC_NM as 'Agent Name', AdminLevel as Role, Count(Claim_ID) as 'Count of Claims Reviewed', Spare as AgentID 
from (SELECT DISTINCT Spare, SpareFinished, CLAIM_ID FROM ClosedClaims_MERGE
UNION SELECT DISTINCT Spare, SpareFinished, CLAIM_ID FROM tblAuditing) CCM 
LEFT JOIN PROC_LIST PL ON CCM.Spare = PL.LOGIN 
WHERE CCM.SpareFinished >= '1/1/2013' AND CCM.SpareFinished <= '11/18/2013' 
GROUP BY Spare, PROC_NM, AdminLevel 
ORDER BY Count(Claim_ID) DESC

显然,因为我在FROM子句(SpareFinished)中有日期字段,所以它会对同一个声明进行多次触摸。我无法弄清楚如何执行此操作,因为我需要在SQL中保留SpareFinished,因为用户将从表单中选择日期范围(因此我的“WHERE”子句)。

我的数据看起来像这样:
+++ ClosedClaims +++

Claim_ID       Spare       SpareFinished
123456         CC235        1/1/2013
123457         CC201        6/1/2013

+++ tblAuditing +++

Claim_ID       Spare       SpareFinished
123456         CC212        4/1/2013
123456         CC201        2/1/2013
123456         CC212        3/1/2013
123456         CC203        2/10/2013
123456         CC201        1/1/2013
123457         CC201        1/7/2013
123457         CC212        3/1/2013

+++ PROC_LIST +++

AdminLevel     LOGIN        PROC_NM
Senior         CC235        Jim Thomas
Senior         CC201        Sue Schmidt
Junior         CC212        Julie Lawrence
Junior         CC203        Bob Hurley

在这种情况下,我的输出应该类似于:

Agent Name         Role     Count Of Claims Reviewed     AgentID
Jim Thomas         Senior   1                            CC235
Sue Schmidt        Senior   2                            CC201
Julie Lawrence     Junior   2                            CC212
Bob Hurley         Junior   1                            CC203

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

如果我正确理解了问题,我相信Count(不同的Claim_ID)应该有效。