【问题标题】:Getting sum from two tables从两个表中获取总和
【发布时间】:2016-05-18 16:54:57
【问题描述】:

我有两张桌子。

Voucher 
V_Id Cost
1     400
2     500

Expense 
E_Id  V_Id  Cost
1      1     100
2      1     100
3      1     100

我需要加入他们才能得到

V_Id  V_Cost  E_Cost
1      400     300
2      500      0

我尝试过 INNER JOIN,但我得到的值相同。请帮忙。

【问题讨论】:

    标签: sql-server sql-server-2008 join sum


    【解决方案1】:

    我将 Expense 表的 SUM(Cost) 作为 E_Cost,然后用 Voucher Left join 得到预期的结果:

    SELECT V.V_Id, V.Cost AS V_Cost, ISNULL(E.E_Cost, 0) AS E_Cost
    FROM Voucher V
    LEFT JOIN (  SELECT V_Id, SUM(Cost) AS E_Cost
                 FROM Expense 
                 GROUP BY V_Id ) AS E ON E.V_Id = V.V_Id
    

    给定数据的工作示例:

    DECLARE @Voucher TABLE (V_Id INT, Cost INT)
    INSERT INTO @Voucher (V_Id, Cost)
    VALUES (1, 400), (2, 500)
    
    DECLARE @Expense TABLE (E_Id INT, V_Id INT, Cost INT)
    INSERT INTO @Expense (E_Id, V_Id, Cost)
    VALUES (1, 1, 100), (2, 1, 100), (3, 1, 100)
    
    SELECT V.V_Id, V.Cost AS V_Cost, ISNULL(E.E_Cost, 0) AS E_Cost
    FROM @Voucher V
    LEFT JOIN (  SELECT V_Id, SUM(Cost) AS E_Cost
                 FROM @Expense 
                 GROUP BY V_Id ) AS E ON E.V_Id = V.V_Id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多