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