假设我有一张桌子销售:
Sale_ID Sale_date Sale_amount
93480294 2017-01-01 100.00
12124343 2017-01-02 400.00
19859248 2017-01-01 130.00
65683748 2017-01-01 200.00
表返回
Sale_ID Return_date Sale_amount
93480294 2017-01-03 100.00
我正在尝试创建一个总销售表来计算销售额减去返回的sale_amount(如果存在)
类似
select sales.sale_id, sales.sale_amount - returns.sale_amount
from sales_table sales left outer join returns_table returns on sales.sale_id = returns.sale_id
将返回
12124343 NULL
19859248 NULL
65683748 NULL
93480294 0
但我需要它返回
93480294 0
12124343 400
19859248 130
65683748 200
tl; dr - 如何将右列中未显示在左列中的行计为零,以便计算差异?
答案 0 :(得分:2)
使用coalesce()
:
select sales.sale_id,
coalesce(sales.sale_amount, 0) - coalesce(returns.sale_amount, 0)
from sales_table sales left outer join
returns_table returns
on sales.sale_id = returns.sale_id;
答案 1 :(得分:0)
试试这个:
select sales.sale_id, sales.sale_amount - isnull(returns.sale_amount, 0)
from sales_table sales
left outer join returns_table returns on sales.sale_id = returns.sale_id