Número + pesquisa de acesso IIF

([4]) Os trabalhadores da empresa estão divididos em categorias A, B E C, independentemente da divisão em que trabalham (Finanças, Recursos Humanos, Vendas)...)

Como posso escrever uma consulta (Access 2010) para obter o número de funcionários para cada categoria e cada divisão?

a saída final será uma folha excel onde as divisões da empresa estarão na coluna A, na categoria A na coluna B, na categoria B na coluna e na categoria C na coluna D.

pensei que um IIF() aninhado num COUNT() seria fazer o trabalho, mas na verdade conta o número total de empregados em vez de dar a desagregação por categoria.

Alguma ideia?

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:];

o meu objectivo é codificar uma única declaração sql e evitar escrever sub-consultas a fim de calcular os valores para cada divisão.

Author: Dai, 2014-04-10

4 answers

Count conta todos os valores não nulos ... então você está contando 1 para cada linha independentemente do valor [Category].

Se quiseres ficar com Count ...

Count(IIf([Category]="A",1,Null))
Caso contrário, mude para Sum ...
Sum(IIf([Category]="A",1,0))
 4
Author: HansUp, 2014-04-10 14:05:36

Utilizar GROUP BY em vez de IIF. Tenta isto.

SELECT [Division:], [Category], Count([Category]) AS Category_Count
FROM tblAssssDB
GROUP BY [Division:], [Category];
 2
Author: Racil Hilan, 2014-04-10 14:04:43

Tenta esta Contagem:

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

Agrupei a minha expressão qry e colocar sob este campo de contagem que criei. Funcionou comigo.

 0
Author: Jimmy, 2015-05-08 19:09:47
Select count(iif(fieldname='a',1,null)) as  asde 
from [table name] 
where .....
 -2
Author: Earl, 2015-02-24 23:41:54