【发布时间】:2013-12-07 01:07:44
【问题描述】:
我有 3 张桌子:
ClosedClaims - 此表包含数十个字段,最重要的是 Spare(第一个接触索赔的人的 ID)、SpareFinished(他们打开它的日期)和 Claim_ID(索赔的 ID)。
tblAuditing - 此表保留了涉及索赔的人员的审计跟踪,并且仅包含三个字段; Spare(触摸它的人的 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) 中有日期字段,所以它将计算对同一个声明的多次触摸。我无法弄清楚如何执行此操作,因为我需要将 SpareFinished 保留在 SQL 中,因为用户将从表单中选择日期范围(因此我的“WHERE”子句)。
我的数据看起来像这样:
+++ ClosedClaims +++
Claim_ID Spare SpareFinished
123456 CC235 1/1/2013
123457 CC201 6/1/2013
+++ tbl审计 +++
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
感谢任何帮助。
【问题讨论】:
标签: sql sql-server