我已经使用了stackoverflow多年,通常我已经能够通过搜索找到我需要的但我道歉,我找不到像这样的例子。我对这些东西非常陌生,但喜欢在工作中协助各种项目。
我在保险索赔行业工作,我们将保险索赔作为电子档案。主管会对这些文件进行审核,简称为文件审核。我有一个Access数据库,我用它来跟踪工作中的所有文件审查。
有时作为理赔主管,我们正在对我们的OWN员工进行文件审核,这意味着该员工向我报告。其他时候,我正在向一位向不同主管报告的员工进行文件审查。
我的主表看起来像这样(包含许多其他列),每条记录都表示文件检查:
ClaimNumber | Supervisor | Reviewer
----------- | -----------| ------------
1---------- | ---Bob-----| Bob
2---------- | ---Bob-----| Amy
3---------- | ---John----| Amy
4---------- | ---John----| Dean
5---------- | ---John----| John
6---------- | ---Dean----| Dean
7---------- | ---Dean----| Dean
8---------- | ---Dean----| Bob
9---------- | ---Kyle----| Bob
10--------- | ---Bob-----| Shawn
根据是否使用了联接,请注意有时在审阅者列中不会列出一个主管名称。同样,有时评论者名称不会在主管列中一次列出。
所以,我需要一个返回
的查询Reviewer ------ TotalReviews ---- Self_Reviews ---- Cross_Reviews
审稿人是所有独特的审稿人
TotalReviews是评论者列中列出评论者姓名的次数
自我评价是在评论者列中列出评论者姓名的次数,其名称等于该特定记录的主管名称
交叉评论是在评论者列中列出评论者姓名的次数,其名称不等于该特定记录的主管名称
Bob共有3条评论,1条评论,2条评论
Amy共有2条评论,0条评论,2条评论
Dean共有3条评论,2条评论,1条评论
John有1条评论,1条评论,0条评论
Shawn有1条评论,0自己,1个交叉
我知道这对我来说似乎很复杂,但我希望有人可以协助让它变得更容易。我只是使用Access,因此任何oracle或其他SQL语法都可能无效。
答案 0 :(得分:0)
这里有一个简单的技巧:对指标函数进行求和。
自我评价的指标功能为Switch(Supervisor = Reviewer,1,True,0)
。
这导致以下查询:
SELECT
T.Reviewer,
COUNT(*) AS TotalReviews,
SUM(Switch(T.Supervisor = T.Reviewer,1,True,0)) AS Self_Reviews,
SUM(Switch(T.Supervisor <> T.Reviewer,1,True,0)) AS Cross_Reviews
FROM TableName T
GROUP BY T.Reviewer
在除Access之外的其他环境中,指标功能通常是褪色:
CASE WHEN Supervisor = Reviewer THEN 1 ELSE 0 END