Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Access SQL-我需要一个查询来根据几个条件计算字段数_Sql_Ms Access_Vba - Fatal编程技术网

Access SQL-我需要一个查询来根据几个条件计算字段数

Access SQL-我需要一个查询来根据几个条件计算字段数,sql,ms-access,vba,Sql,Ms Access,Vba,我已经使用stackoverflow很多年了,通常我可以通过搜索找到我需要的东西,但是我很抱歉,我找不到这样的例子。我对这些东西非常陌生,但我喜欢在工作中帮助完成各种项目 我在保险索赔行业工作,我们有电子文件形式的保险索赔。主管对这些文件进行审查,简称为文件审查。我有一个Access db,用于跟踪工作中的所有文件审查 有时作为理赔主管,我们会对自己的员工进行文件审查,这意味着员工会向我汇报。其他时候,我会对向其他主管报告的同事进行文件审查 我的主表如下所示(包含许多其他列),每条记录都表示文件

我已经使用stackoverflow很多年了,通常我可以通过搜索找到我需要的东西,但是我很抱歉,我找不到这样的例子。我对这些东西非常陌生,但我喜欢在工作中帮助完成各种项目

我在保险索赔行业工作,我们有电子文件形式的保险索赔。主管对这些文件进行审查,简称为文件审查。我有一个Access db,用于跟踪工作中的所有文件审查

有时作为理赔主管,我们会对自己的员工进行文件审查,这意味着员工会向我汇报。其他时候,我会对向其他主管报告的同事进行文件审查

我的主表如下所示(包含许多其他列),每条记录都表示文件审阅:

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篇交叉评论

约翰有1个复习,1个自我,0个交叉

Shawn有1个评论,0个自我,1个交叉


我知道这对我来说很复杂,但我希望有人能帮助我,让事情变得更容易。我只是在使用Access,所以任何oracle或其他SQL语法都可能不起作用。

这里有一个简单的技巧可以使用:对指示符函数求和

自我审查的指标功能将是
开关(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

多纳先生。。。非常感谢!我得到一个语法错误,缺少运算符@试运行对不起,我忘了合上
总和的括号。编辑好了。哇,太完美了!我真诚地感谢您的帮助,您的解决方案比我尝试的其他方法简单得多!再次感谢,先生!
CASE WHEN Supervisor = Reviewer THEN 1 ELSE 0 END