【问题标题】:Count + IIF - Access queryCount + IIF - 访问查询
【发布时间】:2014-05-24 06:56:16
【问题描述】:

公司的员工分为 A、B 和 C 类,无论他们在哪个部门工作(财务、人力资源、销售......)

如何编写查询 (Access 2010) 以检索每个类别和每个部门的员工人数?

最终输出将是一个 Excel 表,其中公司部门将在 A 列中,A 类在 B 列中,B 类在列中,C 类在 D 列中。

我认为嵌套在 COUNT() 中的 IIF() 可以完成这项工作,但它实际上计算的是员工总数,而不是按类别提供细分。

有什么想法吗?

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 语句并避免编写子查询来计算每个部门的值。

【问题讨论】:

  • 使用sum() 而不是count()
  • 你看过交叉表吗?

标签: sql ms-access count iif


【解决方案1】:

使用GROUP BY 代替IIF。试试这个:

SELECT [Division:], [Category], Count([Category]) AS Category_Count
FROM tblAssssDB
GROUP BY [Division:], [Category];

【讨论】:

    【解决方案2】:

    Count 计算每个非 Null 值...因此,无论[Category] 值如何,您都为每一行计算 1。

    如果你想坚持Count ...

    Count(IIf([Category]="A",1,Null))
    

    否则切换到Sum ...

    Sum(IIf([Category]="A",1,0))
    

    【讨论】:

      【解决方案3】:
      Select count(iif(fieldname='a',1,null)) as  asde 
      from [table name] 
      where .....
      

      【讨论】:

      • 选择访问。[Division:], Count(IIf([Category]='A',1,null)) AS Count_A, Count(IIf([Category]='B',1, null)) AS Count_B, Count(IIf([ET Outcome]='C',1,null)) AS Count_C FROM tblAssssDB GROUP BY tblAssssDB.[Division:]
      【解决方案4】:

      试试这个计数:

      Count(IIf([Field1]="N",1))+Count(IIf([Field2]="N",1)) ...
      

      我将我的 qry 分组并将 Expression 放在我创建的这个 Count 字段下。它对我有用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-04
        • 2020-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多