两列之间的值减法

时间:2015-04-04 07:53:15

标签: sql

这是两个数据

Table1                                    Table2
ID ColA                                   ID ColB
01 10                                     01 20
02 20                                     02 Null
03 30                                     03 30
04 25                                     04 Null

所以我想从Col1减去Col2

我已经编写了sql Query但它没有正常工作

select (Table1.ColA-Table2.ColB)as Temp from Table1 
inner join Table2 on Table1.ID Table2.ID

所以我的问题是当从table2得到null值的时候减法没有这样做,那么将如何解决这个问题

我希望当值为null时,将值取为0

3 个答案:

答案 0 :(得分:2)

您可以使用COALESCE将null默认为0

select COALESCE(Table1.ColA, 0) - COALESCE(Table2.ColB, 0) as Temp 
from Table1 inner join Table2 on Table1.ID Table2.ID

COALESCE接受多个参数并返回第一个非空值。

在某些数据库中,如果您只需要两个参数,则可以使用COALESCE的简写功能。这些函数可能具有nvlifnullisnull等名称,具体取决于数据库,或者可能根本不存在。另一方面,COALESCE本身在大多数数据库中都可用,因此它是一个不错的选择。

答案 1 :(得分:0)

如果使用SQL Server或TSQL,请使用isnull(),如下所示:

select (isnull(Table1.ColA, 0) - isnull(Table2.ColB, 0))as Temp from Table1 
inner join Table2 on Table1.ID Table2.ID

如果您使用其他DBMS,请使用COALESCEifnull()代替isnull()

答案 2 :(得分:0)

尝试使用sql或mysql的IFNULL函数

select ((IFNULL(Table1.ColA, 0))- (IFNULL(Table2.ColB, 0))) as Temp from Table1 inner join Table2 on Table1.ID = Table2.ID