sql sum求和,如果为空显示为0

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql sum求和,如果为空显示为0相关的知识,希望对你有一定的参考价值。

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;';Data Source=" & ThisWorkbook.FullName
Sql2 = "select sum(isnull(实收保费),0) as bf from [Sheet2$] where 渠道名称<>'网上业务-专属产品渠道' and 最新渠道类型='传统直销业务' and 交强商业标志='交强' group by 最新业务归属人员 order by 最新业务归属人员"
Sheet1.[C4].CopyFromRecordset cnn.Execute(Sql2)
cnn.Close: Set cnn = Nothing

想让按where条件判断后,不存在这样的数据那条的sum显示为0,但是运行后报错显示:用于函数参数的个数不对,在查询表达式 sum(isnull(实收保费),0)中。请大神们帮忙看看!

Sql2 = "select sum(isnull(实收保费,0)) as bf from [Sheet2$] where 渠道名称<>'网上业务-专属产品渠道' and 最新渠道类型='传统直销业务' and 交强商业标志='交强' group by 最新业务归属人员 order by 最新业务归属人员"
这样改试一下追问

还是报这个错,麻烦再帮我看下呢

追答

Sql2 = "select sum(nz(实收保费,0)) as bf from [Sheet2$] where 渠道名称'网上业务-专属产品渠道' and 最新渠道类型='传统直销业务' and 交强商业标志='交强' group by 最新业务归属人员 order by 最新业务归属人员"
这样改试一下

追问

nz是什么呀?这个函数如何定义?

参考技术A sum(isnull(实收保费,0)) 应该是这样的。追问

改了之后还是不对呢

参考技术B sum(isnull(实收保费,0))

括号错了吧追问

改了之后还是不对。

追答

select sum(isnull(实收保费,0)) as bf
from [Sheet2$]
where 渠道名称'网上业务-专属产品渠道'
and 最新渠道类型='传统直销业务'
and 交强商业标志='交强'
group by 最新业务归属人员
order by 最新业务归属人员

只是sql语句的话,这样是没问题,你可以在库里执行看看,如果 不对,请说出具体错误信息,光说不对,没意义

追问

报错显示:用于函数参数的个数不对,在查询表达式 sum(isnull(实收保费,0))中

追答

你数据库是什么数据库,确定是sqlserver?

追问

是excel宏啊

追答

access不能直接这样用isnull()函数,你这种写法是sqlserver的
试试:
sum(iif( IsNull(实收保费), 0, 实收保费))

本回答被提问者和网友采纳

在查询SQL语句中为空或不为空怎么写

如果是空字符串就字段名= '' 。如果是不等于空字符字段名 <> ''。如果是 null值  就是  字段名is null或者not null。

oracle sql查询结果为空时如何显示一条空记录:

1、我们来看下oracle sql普通查询时查询结果为空时的显示情况如下图所示。可以看到没做特殊处理时查询结果中一条记录都没有,此处的查询sql记为A查询。

2、我们第一时间会想到既然要求查询结果为空时显示一条空记录,我们首先得创造出一条空记录来,于是想到用一条空记录来和上面的sql查询union 一下,得到了如下查询结果。

3、从上面查询结果中我们好像看到了那就是我们想要达到的预期效果,但是问题来了,一旦我查询条件变化时(查询条件中的loginname参数值变化)。

参考技术A 如果是空字符串就 字段名= ''
如果是不等于空字符 字段名 <> ''
如果是 null值 就是 字段名 is null 或者 not null
参考技术B where a is null
where a is not null

以上是关于sql sum求和,如果为空显示为0的主要内容,如果未能解决你的问题,请参考以下文章

SQL sum结果空值

在sql数据库中,我用聚合函数sum,为啥显示操作数据类型varchar对于sum运算符无效啊?

excel求和,没数据则显示空白

SQL 中sum 是NULL的不显示出来, 怎样显示出0 还有显示出来的是乱的 怎么按我想要的排出来

sql减法,有时为空值

SQL group by 和 sum 基于其他列中的不同值(如果其他列中的值重复,则求和一次)