【问题标题】:Trying to sum 2 tables where some entries do not exist in the other试图总结 2 个表,其中一些条目在另一个表中不存在
【发布时间】:2021-04-01 18:02:25
【问题描述】:

我想用一个总和来连接两个表。我想为不在表 2 中的税码显示 0。我可以使用一个连接,结果 INS1 为 150,INS2 为 0?

表 1

TaxCode FilingCode
INS1 INS
INS2 INS

表 2

TaxCode Payment
INS1 50.00
INS1 100.00

【问题讨论】:

    标签: sql left-join inner-join right-to-left


    【解决方案1】:

    你只需要一个简单的左外连接,

    Select t1.TaxCode, sum(coalesce(Payment,0)) Payment
    from Table1 t1
    left join Table2 t2 on t2.Taxcode=t1.Taxcode
    group by t1.Taxcode
    

    【讨论】:

      【解决方案2】:
      Select t1.TaxCode,t1.FillingCode, sum(nvl(Payment,0)) as Payment
      from Table1 t1
      left outer join Table2 t2 on t1.Taxcode=t2.Taxcode
      group by t1.Taxcode,t1.FillingCode;
      

      【讨论】:

      • 它比这更复杂。我不得不与工会和交叉加入做左加入
      【解决方案3】:

      对于正在寻找此类解决方案的任何人,我的有效查询如下

       SELECT 
           T.TRAN_CODE,
           SUM(ISNULL(TF.PAYMENT, 0)) AS PrePayment
         FROM 
          Tranctl AS T
              LEFT OUTER JOIN (
                  SELECT
                  T.TRAN_CODE,
                  0 AS PAYMENT
              FROM 
                Tranctl AS T
              CROSS JOIN Tran_File AS TF
              UNION ALL SELECT 
                  TF.TRAN_CODE,
                  TF.PAYMENT AS PrePayment
              FROM Tran_File AS TF 
              WHERE 
                  TF.ID = '10175'
              AND TF.TAX_YEAR = '2021'
          ) TF ON T.TRAN_CODE = TF.TRAN_CODE 
      WHERE 
          T.Filing_Code = 'INS'
      GROUP BY 
          T.TRAN_CODE
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-11
        • 2015-07-02
        • 2023-03-21
        相关资源
        最近更新 更多