【问题标题】:Subtract totals from two different tables SQL从两个不同的表 SQL 中减去总计
【发布时间】:2014-12-22 08:35:10
【问题描述】:

我有两个不同的表,每个表都有一个与代码项目相关的金额相关字段(每个项目代码有不同的金额)

我想将两个表的每个项目代码的金额相加,然后得到差值(减法)

如果我这样做:

SELECT codigo,
       ROUND(SUM(importe),2) AS 'resultado' 
FROM tabla1 
GROUP BY codigo

SELECT codigo,
       ROUND(SUM(importe),2) AS 'resultado' 
  FROM tabla2 
GROUP BY codigo

SUM() 函数工作正常,但是当我做减法时,结果不正确:

SELECT t.codigo,
       ROUND(SUM(t.importe),2) - ROUND(SUM(d.importe),2) AS 'resultado' 
FROM tabla1 t
LEFT JOIN tabla2 d ON t.codigo=d.codigo 
GROUP BY t.codigo;

谢谢!

【问题讨论】:

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


    【解决方案1】:

    试试这个方法:

    SELECT codigo,
           sum(resultado1 - resultado2) AS 'resultado'
    FROM  (       
    SELECT codigo,
           ROUND(SUM(importe),2) AS 'resultado1',
           0 AS 'resultado2'
    FROM tabla1 
    GROUP BY codigo
    UNION ALL
    SELECT codigo,
           0 AS 'resultado1',
           ROUND(SUM(importe),2) AS 'resultado2'
      FROM tabla2 
    GROUP BY codigo
    ) tablatot
    GROUP BY codigo
    

    【讨论】:

      【解决方案2】:
      SELECT t.codigo,
             ROUND(SUM(ISNULL(t.importe, 0) - ISNULL(D.importe, 0)),2) AS 'resultado' 
      FROM tabla1 t
      LEFT JOIN tabla2 d ON t.codigo=d.codigo 
      GROUP BY t.codigo;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-04
        • 2019-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多