sql问题(111分)!!!(100分)

  • 主题发起人 主题发起人 yuanh23
  • 开始时间 开始时间
Y

yuanh23

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:以下是我写的一段循环计算支出额的程序,但有一个问题:如果三个表中只要有一个值为NULL,则计算出来的就为NULL。
SQL Server中有没有一个函数可以在计算时将NULL作为0来计算呢?这个问题是否可以通过别的途径来解决呢?
select (zhi_ex+zhi_eve+zhi_zg) zhi from
(select sum(sz_Countf) zhi_ex from account_ex ae where ae.cnf_id=5 and ae.sz_type='支' ) d,
(select sum(sz_Countf) zhi_eve from account_eve aeve where aeve.cnf_id=5 and aeve.sz_type='支' ) e,
(select sum(sz_Countf) zhi_zg from account_zg az where az.cnf_id=5 and az.sz_type='支' ) f
 
oracle中有一个iif
 
能不能加一个条件呢。
where column is not null?
 
select (nvl(zhi_ex,0)+nvl(zhi_eve,0)+nvl(zhi_zg,0)) zhi from
(select sum(sz_Countf) zhi_ex from account_ex ae where ae.cnf_id=5 and ae.sz_type='支' ) d,
(select sum(sz_Countf) zhi_eve from account_eve aeve where aeve.cnf_id=5 and aeve.sz_type='支' ) e,
(select sum(sz_Countf) zhi_zg from account_zg az where az.cnf_id=5 and az.sz_type='支' ) f
 
isnull(zhi_ex,0) 就可以了
 
select (isnull(zhi_ex,0)+isnull(zhi_eve,0)+isnull(zhi_zg,0)) zhi from
(select sum(sz_Countf) zhi_ex from account_ex ae where ae.cnf_id=5 and ae.sz_type='支' ) d,
(select sum(sz_Countf) zhi_eve from account_eve aeve where aeve.cnf_id=5 and aeve.sz_type='支' ) e,
(select sum(sz_Countf) zhi_zg from account_zg az where az.cnf_id=5 and az.sz_type='支' ) f
 
同意烂泥和SPORTSMAN的建议,用ISNULL函数
可以把空值用零来代替,我想应该没有问题了
 
用ISNULL函数
可以把空值用零来代替,应该没有问题了
 
多人接受答案了。
 
后退
顶部