Sql 按GroupBy筛选结果时列出所有记录

Sql 按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总数

我的要求是使用MS Access验证Column2 group by Column1的总数或总和是否应等于Column3 group by Column1

举个例子, 按帐号划分的DebitAmount组的总数应等于同一帐号的BillAmount。i、 例如,AccountNumber='129610896'的DebitAmount或SUMDebitAmount总数应等于30000

同样,AccountNumber='184046309'的DebitAmount或SUMDebitAmount总数应等于19000

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)