查询来计算来自不同列的值

时间:2015-08-07 18:52:44

标签: sql ms-access ms-query

我正在寻找一个可以在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

2 个答案:

答案 0 :(得分:0)

您可以使用NZ(SQL中的COALESCE)将空值设为0然后您可以执行" normal"工作 - 就像在这个例子中添加它们一样:

 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

(nb,如果在SQL中使用IIF,那么将使用END)

答案 1 :(得分: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;

编辑:

Hogan的观点很好,很容易纳入:

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;