0

我正在寻找一个不能在 Access 中工作的查询,它可以为我提供完成某些要求的用户总数。我知道我可以按列分组,“棘手”的部分是,如果用户完成了 B、C 或 D 列中的任何要求,我需要将其分组为一列。换句话说,这是我的数据:

User    Company A   B   C   D   E
John    ABC     1               1
Bob     ABC     1   1   1       1
Reggie  ABC             1   1   1
Alex    BCA     1               
Mary    BCA     1   1       
Jane    CBA     1   1   1   1

这是我正在寻找的最终结果:

Company A   E   F(B or C or D)
ABC     2   3   2
BCA     2   0   1
CBA     1   0   1
4

2 回答 2

0

您可以使用 NZ(SQL 中的 COALESCE)将 null 值设为 0,然后您可以执行“正常”工作——就像在此示例中添加它们:

 SELECT SUM(NZ(B,0)+NZ(C,0)+NZ(D,0)) AS F

或者看你的逻辑

 SELECT SUM(IIF(NZ(B,0)+NZ(C,0)+NZ(D,0) > 0,1,0) ) AS F

(注意,如果 SQL 中的 IIF,将使用 CASE WHEN THEN END 代替)

于 2015-08-07T18:55:01.697 回答
0

你会使用group by

select Company,
       nz(SUM(A), 0) as A, nz(SUM(E), 0) as E,
       (nz(SUM(B), 0) + nz(SUM(C), 0) + nz(SUM(D), 0) ) as F
from table
group by Company;

编辑:

霍根的观点很好,很容易融入:

select Company,
       nz(SUM(A), 0) as A, nz(SUM(E), 0) as E,
       (nz(MAX(B), 0) + nz(MAX(C), 0) + nz(MAX(D), 0) ) as F
from table
group by Company;
于 2015-08-07T19:00:29.670 回答