mysql - 计算两个字段之和之间的差异

标签 mysql sql oracle vba

我有一张表,我从表中扣除贷方和借方以获得我的金额,但问题是,它仅反射(reflect)在一行中,我的贷方行仅对几行有值(value),其余行是空白。

示例表我有成本、利润、借方和贷方,我正在计算借方总和和贷方总和之间的差异以产生一个金额,这里的问题是它只影响单个值

这就是我所做的

SELECT ACC, PROFIT, COST, PROJ,Sum(CREDIT),Sum(DEBIT),Sum(CREDIT)- Sum(DEBIT) asAMOUNT FROM SAMPLE_TBL GROUP BY ACC, PROFIT,COST,PROJECT;

我得到的值为

ACC PROFIT  COST    PROJ    debit    credit AMOUNT

1000    1316    105472      18000       
1000    1316    614550      20000       
1000    1348    614576      16000       
1000    2032    616034      20000       
150700  1316    614550      1200    800 -400

150700  1348    614576      400 

这里的问题是,它没有影响 AMOUNT 中的剩余行,我可以知道原因

最佳答案

我认为问题在于您的一列或多列中有 NULL 值。如果是这种情况,处理此问题的标准 SQL 方法是使用 coalesce():

SELECT ACC, PROFIT, COST, PROJ, Sum(CREDIT), Sum(DEBIT),
       (COALESCE(Sum(CREDIT), 0) - COALESCE(Sum(DEBIT), 0)) as AMOUNT
FROM SAMPLE_TBL
GROUP BY ACC, PROFIT, COST, PROJECT;

这会将 NULL 值替换为 0。它适用于 Oracle 和 MySQL(该问题标记的两个数据库)以及大多数其他数据库。

关于mysql - 计算两个字段之和之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24132542/

相关文章:

mysql - 如何计算不同的行数

mysql - 根据混合日期填写缺失的行

mysql - 使用别名在mysql中将多个表链接在一起

iphone - 从远程 MySQL 获取记录到 iPhone 的最快最有效的方法

php - 为变量设置值

sql - 数组在IN()子句中oracle PLSQL

mysql - asp.net sql从多个表中选择数据

sql - 使用 rank 选择 Oracle SQL 中的前 10 个元组

oracle - 设置 Oracle Text 以索引 Oracle 表中多列的值

java - 从 Tomcat 中的池中中止/清除无效的数据库连接