0
        SELECT
                    BB.NAME BranchName,
                    VI.NAME Village,
                    COUNT(BAC.CBSACCOUNTNUMBER) 'No.Of Accounts',
                    SUM(BAC.CURRENTBALANCE) SumOfAmount,
                    SUM(CASE
                        WHEN transactiontype = 'C' THEN amount
                        ELSE 0
                        END) AS CreditTotal,
                    SUM(CASE
                        WHEN transactiontype = 'D' THEN amount
                        ELSE 0
                        END) AS DebitTotal,
                    SUM(CASE
                        WHEN transactiontype = 'C' THEN amount
                        WHEN transactiontype = 'D' THEN - 1 * amount
                        ELSE 0
                        END) AS CurrentBalance

                FROM   CUSTOMER CU

                JOIN   APPLICANT AP
                ON     AP.CUSTOMER_CODE = CU.CODE

                JOIN   ADDRESS AD
                ON     AD.ENTITYCODE = AP.CODE

                JOIN   VILLAGE VI
                ON     VI.CODE           = AD.VILLAGE_CODE
                   AND VI.STATE_CODE     = AD.STATE_CODE
                   AND VI.DISTRICT_CODE  = AD.DISTRICT_CODE
                   AND VI.BLOCK_CODE     = AD.BLOCK_CODE
                   AND VI.PANCHAYAT_CODE = AD.PANCHAYAT_CODE

                JOIN   BANKBRANCH BB
                ON     BB.CODE = CU.BANKBRANCH_CODE

                JOIN   BANKACCOUNT BAC
                ON     BAC.ENTITYCODE = CU.CODE

                LEFT OUTER JOIN accounttransaction ACT 
                ON ACT.BANKACCOUNT_CBSACCOUNTNUMBER= BAC.CBSACCOUNTNUMBER
                   AND ACT.TRANDATE <= '2013-07-01'
                   AND BAC.ACCOUNTOPENINGDATE < '2013-07-01'

                WHERE  BAC.ENTITY = 'CUSTOMER'
                   AND AD.ENTITY = 'APPLICANT'

                GROUP BY BB.NAME,VI.NAME;

这里在 BANKBRANCK 表的一个分支中,当我使用左外连接执行上述查询时,计数增加到 293,这是错误的,因为只有在该分支下打开的帐户是 263,结果是 293,这是错误的。如果我删除左外连接,那么当我包含左外连接时,一个分支的结果是 263,然后计数增加到 293,请帮助我问题出在哪里

   This is the continuous for the below question

    http://stackoverflow.com/questions/17277899/unable-to-get-left-outer-join-result-in-mysql-query/17279769#17279769   
4

1 回答 1

0

这部分

LEFT OUTER JOIN accounttransaction ACT 
            ON ACT.BANKACCOUNT_CBSACCOUNTNUMBER= BAC.CBSACCOUNTNUMBER
               AND ACT.TRANDATE <= '2013-07-01'
               AND BAC.ACCOUNTOPENINGDATE < '2013-07-01'

允许在 accounttransaction 表上返回超过 1 行,这将允许行数从 263 增加到 293。Left Join 不会隐式地将连接的数据限制为只有一个匹配项。

于 2013-07-01T12:26:54.457 回答