公司的员工分为A,B和C类,无论他们在哪个部门工作(财务,人力资源,销售......)
如何编写查询(Access 2010)以检索每个类别和每个部门的员工数量?
最终输出将是excel表,公司部门将在A列,B列中的A类,列中的B类和D列中的C类。
我认为嵌套在IIF()
中的COUNT()
可以完成这项工作,但它实际上会计算员工总数,而不是按类别给出细分。
有什么想法吗?
SELECT
tblAssssDB.[Division:],
COUNT( IIF( [Category] = "A", 1, 0 ) ) AS Count_A,
COUNT( IIF( [Category] = "B", 1, 0 ) ) AS Count_B,
COUNT( IIF( [ET Outcome] = "C", 1, 0 ) ) AS Count_C
FROM
tblAssssDB
GROUP BY
tblAssssDB.[Division:];
我的目标是编写单个sql语句并避免编写子查询以计算每个分区的值。
答案 0 :(得分:4)
Count
计算每个非空值...因此,无论[Category]
值如何,您都会为每一行计算1。
如果你想坚持使用Count
...
Count(IIf([Category]="A",1,Null))
否则切换到Sum
...
Sum(IIf([Category]="A",1,0))
答案 1 :(得分:2)
使用GROUP BY
代替IIF
。试试这个:
SELECT [Division:], [Category], Count([Category]) AS Category_Count
FROM tblAssssDB
GROUP BY [Division:], [Category];
答案 2 :(得分:0)
试试这个计数:
Count(IIf([Field1]="N",1))+Count(IIf([Field2]="N",1)) ...
我将qry分组并将Expression放在我创建的Count字段下。它对我有用
答案 3 :(得分:-2)
Select count(iif(fieldname='a',1,null)) as asde
from [table name]
where .....