感谢您抽出宝贵时间阅读我的问题。
想象一下,如果客户开设账户,可以获得免费礼品。有些“客户”开设账户以获得免费礼品,但绝不会在账户中添加任何款项。其他“客户”开立账户,获得免费礼品,并通过增加资金为其账户提供资金。
我需要将受资助的帐户与所有客户的总体数量进行比较。
事情起初很容易......
SELECT Audits.AuditDate, Count(Audits.NickName) AS AllAccounts
FROM Audits
Group By Audits.AuditDate
这显然让我每天都会计算所有帐户。
要获得“资助”计数,我会......
SELECT Audits.AuditDate, Count(Audits.NickName) AS Funded
FROM Audits
WHERE Audits.CurrGBP > 0
GROUP BY Audits.AuditDate;
这一次,我得到了“资助”帐户的计数。
现在,这就是我被卡住的地方......我想要同一个查询中的两个计数,所以我的结果会像这样......
AuditDate (DD/MM/YYYY) AllAccounts Funded
01/01/2012 50 45
02/01/2012 60 50
03/01/2012 70 55
有些东西告诉我我需要使用子查询,但在谷歌搜索几页后。子查询对我来说很困惑。
我可以请求帮助吗?你能告诉我如何写一个子查询来给我我需要的结果。此致 约翰。
PS - My Audits表包含以下字段:Audit_ID,Audit_Date,NickName,CurrGBP,我正在使用MS Access 2010。
答案 0 :(得分:4)
无法记住访问是否支持案例;或者如果IIF是要走的路......但是像...那样的东西。
实际上不需要子查询,您可以在一个查询中获得结果,只是限制使用案例或IIF时的计数。
Select A.AuditDate,
count (A.NickName) as AllAccounts,
sum(CASE when A.CurrGBP > 0 then 1 else 0 end) as Funded
FROM Audits A
GROUP BY A.AuditDate
如果是IIF
Select A.AuditDate,
count (A.NickName) as AllAccounts,
sum(IIF(A.CurrGBP >0,1,0)) as Funded
FROM Audits A
GROUP BY A.AuditDate
编辑,在选择中缺少一些逗号。
答案 1 :(得分:0)
试试这个:
SELECT AuditA.AuditDate,
Count(AuditA.AllAcounts) as AllAccount,
iTable.iCount
FROM Audits as AuditA
INNER JOIN
(SELECT AuditB.Audit_ID, COUNT(AuditB.Audit_ID) as iCount
FROM Audit as AuditB
WHERE AuditB.CurrGBP > 0) as iTable
ON AuditA.Audit_ID = iTable.Audit_ID