Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 已向每位客户提供的融资总额_Sql_Ms Access_Inner Join - Fatal编程技术网

Sql 已向每位客户提供的融资总额

Sql 已向每位客户提供的融资总额,sql,ms-access,inner-join,Sql,Ms Access,Inner Join,我有三张不同的桌子: SystemA_Cash SystemA_Loans SystemB_CarLoans 每个表都有Cash\u AdvanceID字段、Customer、&资金金额 我需要计算每个客户的资金总额 每个客户也可以出现在任何表格中 到目前为止我做到了 SELECT SystemA_CashAdvances.CashAdvanceID, SystemA_CashAdvances.Customer, SystemA_CashAdvances.Funded_Amount FR

我有三张不同的桌子:

SystemA_Cash
SystemA_Loans 
SystemB_CarLoans
每个表都有
Cash\u AdvanceID
字段、
Customer
、&
资金金额

我需要计算每个客户的资金总额

每个客户也可以出现在任何表格中

到目前为止我做到了

SELECT SystemA_CashAdvances.CashAdvanceID, SystemA_CashAdvances.Customer, 
SystemA_CashAdvances.Funded_Amount 
FROM 
SystemA_CashAdvances
INNER JOIN
SystemA_Loans ON SystemA_Loans.CashAdvanceID = SystemA_CashAdvances.Cash_AdvanceID
INNER JOIN
SytemB_CarLoans ON SystemA_CashAdvances.Cash_AdvanceID = SystemB_CarLoans.CashAdvanceID;

它似乎没有返回一张包含客户的表以及每个表的资金总额。

为此,您可以使用
UNION
groupby
,例如:

SELECT  Cash_AdvanceID,
        Customer, 
        SUM(Funded_Amount) AS "Total_Funded_Amount"
FROM (
        SELECT  Cash_AdvanceID,
                Customer, 
                Funded_Amount 
        FROM    SystemA_CashAdvances
        UNION
        SELECT  Cash_AdvanceID,
                Customer, 
                Funded_Amount 
        FROM    SystemA_Loans
        UNION
        SELECT  Cash_AdvanceID,
                Customer, 
                Funded_Amount 
        FROM    SytemB_CarLoans
)
GROUP BY Cash_AdvanceID,
         Customer;
使用
JOIN
执行此操作将很困难,因为MS Access不像其他数据库引擎那样支持完全外部连接。最近的是单面外部连接,如下所示:

SELECT    a.Cash_AdvanceID,
          a.Customer, 
          a.Funded_Amount + Nz(l.Funded_Amount)
                          + Nz(c.Funded_Amount) AS "Total_Funded_Amount" 
FROM      (SystemA_CashAdvances AS a
LEFT JOIN SystemA_Loans AS l
       ON a.Cash_AdvanceID = l.Cash_AdvanceID)
LEFT JOIN SytemB_CarLoans AS c
       ON a.Cash_AdvanceID = c.Cash_AdvanceID;

以上内容适用于至少出现在SystemA\u CashAdvances表中的客户。如果它们仅出现在另一个表中,则将从结果中排除。为了让这些人也参与进来,您需要再次使用
UNION
,这让我们回到上面的第一个解决方案。

您使用的是什么数据库?MySQL和MS Access非常不同。相应地标记您的问题。您需要结果中的
CashAdvanceID
做什么,如果需要,您想用它做什么?我想这三个表中可能有不同的值,即使对于同一个客户也是如此。这不应该被忽略吗?嘿,戈登,我在itTrincot中使用ms-access和sql。CasyAdvEnSnID是所有三个表中的主键。如果您愿意,请考虑以下简单的两步过程:1。如果您还没有这样做,请提供适当的CREATE和INSERT语句(和/或SQLFIDLE),以便我们可以更轻松地复制问题。2.如果您还没有这样做,请提供一个与步骤1中提供的信息相对应的所需结果集。嘿,这样做是可行的,但它给了我两列,一列是客户,但其编号而不是名称和资金总额。最终输出最好是3列。ID、客户、资金总额。第二个字段有客户名称,第一个字段有现金预付ID。用3列更新答案。您仍然没有说客户名称存储在哪里。非常感谢!在这三个表中的每一个表都有3列1)现金预付款2)客户(客户名称)3)资金金额。每个客户都可以在任何表中。一次或两次,因为它适用于不同类型的基金,所以我认为在这种情况下,内部联接可能比联合更好