以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]sum(数量) 为空变为0的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=39254)

--  作者:jnletao
--  发布时间:2013/8/19 18:21:00
--  [求助]sum(数量) 为空变为0的问题
select distinct 颜色,规格,(select sum(数量) from {订单颜色规格表} b where a.颜色=b.颜色 and b.规格=a.规格) as 总数量,(select sum(数量) from {包号登记} c where a.颜色=c.颜色 and c.规格=a.规格) as 已裁数量,(select sum(包号) from {包号登记} d where a.颜色=d.颜色 and d.规格=a.规格) as 已裁包数,总数量-已裁数量 as 待裁数量 from {订单颜色规格表} a

这段代码在执行时, sum(数量) 如果为空,将来显示为空了. 请问如何在本语句中把sum(数量) 的空值变为0

--  作者:czy
--  发布时间:2013/8/19 18:45:00
--  

空值处理函数

ISNULL

判定一个表达式的值是否为空,如果不为空,则返回表达式的值,否则返回一个替代值。

语法

ISNULL(expression, value)

expression一个表达式,如果此表达式的值不为空,则返回此值。
value
     一个替代值,如果表达式的值为空,则返回此替代值。 

例如:

Select 日期, 产品, 数量, 数量, 单价, ISNULL(折扣,0) As 折扣 From {订单}

上述的语句中,如果已经输入折扣,则正常显示折扣,否则折扣列显示的是0。
再次提示:0和空值是两回事,空值表示没有输入数据,而0意味着用户已经输入了一个为0的值。


--  作者:有点甜
--  发布时间:2013/8/19 19:17:00
--  
 如果是access数据库,就使用iif函数,如果是sqlserver数据库,就是 when case 语法

iif(sum(数量)=0, null, sum(数量))

--  作者:qhczy
--  发布时间:2013/8/19 22:09:00
--  
select sum(isnull (数量,0)) 数量