Sql 按GroupBy筛选结果时列出所有记录
我的要求是使用MS Access验证Column2 group by Column1的总数或总和是否应等于Column3 group by Column1 举个例子, 按帐号划分的DebitAmount组的总数应等于同一帐号的BillAmount。i、 例如,AccountNumber='129610896'的DebitAmount或SUMDebitAmount总数应等于30000 同样,AccountNumber='184046309'的DebitAmount或SUMDebitAmount总数应等于19000Sql 按GroupBy筛选结果时列出所有记录,sql,ms-access,Sql,Ms Access,我的要求是使用MS Access验证Column2 group by Column1的总数或总和是否应等于Column3 group by Column1 举个例子, 按帐号划分的DebitAmount组的总数应等于同一帐号的BillAmount。i、 例如,AccountNumber='129610896'的DebitAmount或SUMDebitAmount总数应等于30000 同样,AccountNumber='184046309'的DebitAmount或SUMDebitAmount总数
AccountNumber Code DebitAmount BillAmount
129610896 B2B001 25000 30000
129610896 B2B032 5000 30000
184046309 B2B001 15830 19000
184046309 B2B032 3170 19000
我写了一个查询如下
SELECT AccountNumber, BillAmount, iif ((Sum(DebitAmount) - BillAmount) = 0,1,0) as IsVerify
FROM Master_Table GROUP BY AccountNumber,BillAmount
AccountNumber BillAmount IsVerify
129610896 30000 1
184046309 19000 1
结果仅按帐号显示记录组。如果我有50条记录,它只显示20条,因为我按帐号分组
但我希望显示所有记录,如果借方金额等于账单金额,则IsVerify列应显示值“1”。如果我在查询中包含“Code”列,它将显示所有记录,但显示的结果无效
SELECT Code,AccountNumber, BillAmount, iif ((Sum(DebitAmount) - BillAmount) = 0,1,0) as IsVerify FROM Master_Table GROUP BY Code,AccountNumber,BillAmount
那么,如何编写查询以显示所有记录,并显示验证标志,如下所示
AccountNumber GLCode DebitAmount BillAmount IsVerify
129610896 GLB2B001 25000 30000 1
129610896 GLB2B032 5000 30000 1
184046309 GLB2B001 15830 19000 1
184046309 GLB2B032 3170 19000 1
表格显示不正确。所以请参考链接
请原谅,如果有一些小错误,因为我在mysql和t-sql上工作。但逻辑是正确的。你就快到了!:试试这个:
SELECT mt.AccountNumber, mt.GLCode, mt.DebitAmount, mt.BillAmount, IIf(t1.SumOfDebitAmount - mt.BillAmount = 0,1,0) AS IsVerify
FROM Master_Table AS mt INNER JOIN
(SELECT AccountNumber, Sum(DebitAmount) AS SumOfDebitAmount
FROM Master_Table
GROUP BY AccountNumber) AS t1
ON mt.AccountNumber = t1.AccountNumber
ORDER BY mt.AccountNumber, mt.GLCode;
我们得到一个派生表中的DebitAmount总数,然后根据帐号进行联接。如果DebitAmount减去BillAmount的总数为0,则表示DebitAmount的行将被验证。注:该声明存在一个问题:
IIf(t1.SumOfDebitAmount = mt.BillAmount,1,0)
它不断显示出错误。不知道为什么,真的,但我不能那样做。无论如何,这应该对您有用。大家好,非常感谢您的回答。不幸的是,它不起作用。但是我已经将查询简化为IIfAccountNumber而不是Select AccountNumber中的Select AccountNumber,iif CDBLSUMDIBITAMOUNT-CDBLBillAmount=0,1,0作为IsVerify从主表组按AccountNumber进行验证,BillAmount其中IsVerify=0,1,0作为一个SUMBILAMOUNT检查它工作正常:向Basha致意
IIf(t1.SumOfDebitAmount = mt.BillAmount,1,0)