ITPUB??ì3
ITPUB论坛 » MS SQL Server » [求助]如何对无记录进行Sum得到结果0

标题: [求助]如何对无记录进行Sum得到结果0
离线 Hawl
初级会员



精华贴数 0
个人空间 0
技术积分 38 (33660)
社区积分 0 (713128)
注册日期 2005-12-14
论坛徽章:0
      
      

发表于 2008-7-1 13:29 
[求助]如何对无记录进行Sum得到结果0

就是一张表记录了每次领走的物料的数量
我想对每个月某一物料出库总数求和
但是如果这个月这一物料没有领用记录
则查不出任何结果
如果我希望这种情况下能得到结果0该怎么做呢?

下面是我现在的语句:

SELECT [005 LYMAST].办公用品代码, Sum([005 LYMAST].领用数量) AS 出库量
FROM [005 LYMAST]
WHERE ((([005 LYMAST].领用日期)>=20080601 And ([005 LYMAST].领用日期)<=20080625))
GROUP BY [005 LYMAST].办公用品代码
HAVING ((([005 LYMAST].办公用品代码)='smj01'));


__________________
占位...
只看该作者    顶部
离线 smthgdin
老会员



精华贴数 0
个人空间 0
技术积分 1319 (1285)
社区积分 1 (34700)
注册日期 2004-5-13
论坛徽章:2
ITPUB元老开发板块每日发贴之星    
      

发表于 2008-7-1 13:34 
用case when isnull(列名) then 0 end


__________________
www.kooboy.net
只看该作者    顶部
离线 hyxin
初级会员



精华贴数 0
个人空间 0
技术积分 18 (57599)
社区积分 0 (498161)
注册日期 2005-7-5
论坛徽章:0
      
      

发表于 2008-7-1 19:33 
楼上的说的没错


__________________
只看该作者    顶部
离线 nalnait
初级会员



精华贴数 0
个人空间 0
技术积分 130 (13413)
社区积分 0 (609315)
注册日期 2005-9-13
论坛徽章:0
      
      

发表于 2008-7-1 23:01 
isnull


只看该作者    顶部
离线 Hawl
初级会员



精华贴数 0
个人空间 0
技术积分 38 (33660)
社区积分 0 (713128)
注册日期 2005-12-14
论坛徽章:0
      
      

发表于 2008-7-2 16:02 
十分感谢楼上的三位!
用ISNULL函数解决了

我现在的语句

SELECT     dbo.[001 IMAST TABLE].代码, ISNULL(dbo.月末加权平均成本.月末量, 0) AS 期初量, ISNULL(dbo.vSMMSI.入库量, 0) AS SI,
                      ISNULL(dbo.vSMMSO.出库量, 0) AS SO, ISNULL(dbo.月末加权平均成本.月末量, 0) + ISNULL(dbo.vSMMSI.入库量, 0) - ISNULL(dbo.vSMMSO.出库量, 0)
                      AS 库存量
FROM         dbo.[001 IMAST TABLE] LEFT OUTER JOIN
                      dbo.月末加权平均成本 ON dbo.[001 IMAST TABLE].代码 = dbo.月末加权平均成本.MCode LEFT OUTER JOIN
                      dbo.vSMMSO ON dbo.[001 IMAST TABLE].代码 = dbo.vSMMSO.办公用品代码 LEFT OUTER JOIN
                      dbo.vSMMSI ON dbo.[001 IMAST TABLE].代码 = dbo.vSMMSI.办公用品代码


__________________
占位...
只看该作者    顶部
离线 Hawl
初级会员



精华贴数 0
个人空间 0
技术积分 38 (33660)
社区积分 0 (713128)
注册日期 2005-12-14
论坛徽章:0
      
      

发表于 2008-7-2 16:07 
现在有个新问题

为什么最后一个显示字段
ISNULL(dbo.月末加权平均成本.月末量, 0) + ISNULL(dbo.月末加权平均成本.月末量, 0) + ISNULL(dbo.vSMMSI.入库量, 0) - ISNULL(dbo.vSMMSO.出库量, 0)  AS 库存量
写成 期初量+SI-SO 会报错“找不到××字段”?


__________________
占位...
只看该作者    顶部
离线 petertse
初级会员


精华贴数 0
个人空间 0
技术积分 211 (9201)
社区积分 12 (9647)
注册日期 2005-9-5
论坛徽章:0
      
      

发表于 2008-7-2 16:38 
弱弱问一下 ISNULL是一个函数,但是用 IS NULL(中间有个空格),效果是否一样?


__________________
争取排在5000名以内.
只看该作者    顶部
离线 smthgdin
老会员



精华贴数 0
个人空间 0
技术积分 1319 (1285)
社区积分 1 (34700)
注册日期 2004-5-13
论坛徽章:2
ITPUB元老开发板块每日发贴之星    
      

发表于 2008-7-2 18:09 


QUOTE:
原帖由 petertse 于 2008-7-2 16:38 发表
弱弱问一下 ISNULL是一个函数,但是用 IS NULL(中间有个空格),效果是否一样?

isnull(列名) 和列名 is null,作用一样写法不同。


__________________
www.kooboy.net
只看该作者    顶部
离线 smthgdin
老会员



精华贴数 0
个人空间 0
技术积分 1319 (1285)
社区积分 1 (34700)
注册日期 2004-5-13
论坛徽章:2
ITPUB元老开发板块每日发贴之星    
      

发表于 2008-7-2 18:13 


QUOTE:
原帖由 Hawl 于 2008-7-2 16:07 发表
现在有个新问题

为什么最后一个显示字段
ISNULL(dbo.月末加权平均成本.月末量, 0) + ISNULL(dbo.月末加权平均成本.月末量, 0) + ISNULL(dbo.vSMMSI.入库量, 0) - ISNULL(dbo.vSMMSO.出库量, 0)  AS 库存量
写成 期初量+SI-SO 会报错“找不到××字段”?

层次问题。
要在外面加多层select就可以了,因为此时si,so是结果表的列名,在没有得到结果表前,这些列名是无效的,所以找不到。


__________________
www.kooboy.net
只看该作者    顶部
离线 Ryan-liumin
晟夕


精华贴数 0
个人空间 0
技术积分 3380 (427)
社区积分 6287 (230)
注册日期 2008-5-4
论坛徽章:38
2008北京奥运纪念徽章:手球2008北京奥运纪念徽章:花样游泳2008北京奥运纪念徽章:自行车2008北京奥运纪念徽章:射箭2008北京奥运纪念徽章:水球 
      

发表于 2008-7-5 09:39 
学习了  UP下


__________________
用大海的容量,包容每个小小的心

只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问