我有三个表,我有领域 - area
。所以我决定为每张桌子找一些区域并在一个视图中显示。显示NULL和值
我创建了一个查询
select sum(x.area) as EquipmentSpace,sum(y.area) as ProductSpace,sum(z.area) as ShoppointSpace
from TEquipWarehouse as x,TProductWarehouse as y,TShopPoint as z
然而,当一个表没有任何记录 - 每场的结果是NULL
。
如何解决这个问题?
select sum(ISNULL(x.area,0)) as EquipmentSpace,sum(ISNULL(y.area,0)) as ProductSpace,sum(ISNULL(z.area,0)) as ShoppointSpace
from TEquipWarehouse as x,TProductWarehouse as y,TShopPoint as z
在这种情况下,如果值不存在,你将其代0您SUM的目的:
这修复了原始示例的几个问题。行不会多次计数,并且缺少行的单个表对其他表没有影响。对于缺少行的单个表,您将得到空值。 – joshp
我已经使用IsNull为每个子查询 – lapots
当只有2个参数时,'ISNULL()'和'COALESCE()'做同样的事情,所以可以使用它。 COALESCE与超过2个参数一起工作(在您的查询中不需要)。 –