SQL sum没有查询到数据的时候能不能显示为0

gaomeng320 2017-01-04 11:23:39



SELECT cc = ISNULL(SUM(ISNULL(DispatchMQ, 0)),0)
FROM dbo.T_BASE_TDispatchNotice
WHERE DeleteFlag = 0
AND TPSN = 'YKJH201612230000'
GROUP BY TPSN


想实现在没有数据的时候这列有值且为0
...全文
1227 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
闭包客 2017-01-04
  • 打赏
  • 举报
回复
引用 3 楼 closurer 的回复:

select ISNULL(cc, 0) from 
(
SELECT  cc = SUM(ISNULL(DispatchMQ, 0)),0)
FROM    dbo.T_BASE_TDispatchNotice
WHERE   DeleteFlag = 0
        AND TPSN = 'YKJH201612230000'
GROUP BY TPSN
) a
更正一下:

select ISNULL(cc, 0) from 
(
SELECT  cc = SUM(ISNULL(DispatchMQ, 0))
FROM    dbo.T_BASE_TDispatchNotice
WHERE   DeleteFlag = 0
        AND TPSN = 'YKJH201612230000'
GROUP BY TPSN
) a
闭包客 2017-01-04
  • 打赏
  • 举报
回复

select ISNULL(cc, 0) from 
(
SELECT  cc = SUM(ISNULL(DispatchMQ, 0)),0)
FROM    dbo.T_BASE_TDispatchNotice
WHERE   DeleteFlag = 0
        AND TPSN = 'YKJH201612230000'
GROUP BY TPSN
) a
EnForGrass 2017-01-04
  • 打赏
  • 举报
回复
用COALESCE关键字 SELECT COALESCE(SUM(name),0) FROM person WHERE id > 0
gaomeng320 2017-01-04
  • 打赏
  • 举报
回复
引用 9 楼 closurer 的回复:
不过这样写即使能达到目的,也是一个糟糕的 SQL 语句。 它的解决方法比较曲折,可读性不佳。
好的,非常感谢
闭包客 2017-01-04
  • 打赏
  • 举报
回复
不过这样写即使能达到目的,也是一个糟糕的 SQL 语句。 它的解决方法比较曲折,可读性不佳。
闭包客 2017-01-04
  • 打赏
  • 举报
回复
引用 5 楼 gaomeng320 的回复:
[quote=引用 4 楼 closurer 的回复:] [quote=引用 3 楼 closurer 的回复:]

select ISNULL(cc, 0) from 
(
SELECT  cc = SUM(ISNULL(DispatchMQ, 0)),0)
FROM    dbo.T_BASE_TDispatchNotice
WHERE   DeleteFlag = 0
        AND TPSN = 'YKJH201612230000'
GROUP BY TPSN
) a
更正一下:

select ISNULL(cc, 0) from 
(
SELECT  cc = SUM(ISNULL(DispatchMQ, 0))
FROM    dbo.T_BASE_TDispatchNotice
WHERE   DeleteFlag = 0
        AND TPSN = 'YKJH201612230000'
GROUP BY TPSN
) a
[/quote] 不行,还是没有显示[/quote] 抱歉! 我刚才测试了一下,问题在于你的 group by 从句。 有 group by 从句的情况下,对 0行的结果集求和,是不会返回 null 的。 应改为:

select ISNULL(sum(cc), 0) from 
(
SELECT  cc = SUM(ISNULL(DispatchMQ, 0))
FROM    dbo.T_BASE_TDispatchNotice
WHERE   DeleteFlag = 0
        AND TPSN = 'YKJH201612230000'
GROUP BY TPSN
) a
gaomeng320 2017-01-04
  • 打赏
  • 举报
回复
我错了, 我加group by干嘛 我不用加他的 然后就可以了,谢谢以上~
gaomeng320 2017-01-04
  • 打赏
  • 举报
回复
引用 2 楼 Chinajiyong 的回复:
用COALESCE关键字 SELECT COALESCE(SUM(name),0) FROM person WHERE id > 0
也不行~
gaomeng320 2017-01-04
  • 打赏
  • 举报
回复
引用 4 楼 closurer 的回复:
[quote=引用 3 楼 closurer 的回复:]

select ISNULL(cc, 0) from 
(
SELECT  cc = SUM(ISNULL(DispatchMQ, 0)),0)
FROM    dbo.T_BASE_TDispatchNotice
WHERE   DeleteFlag = 0
        AND TPSN = 'YKJH201612230000'
GROUP BY TPSN
) a
更正一下:

select ISNULL(cc, 0) from 
(
SELECT  cc = SUM(ISNULL(DispatchMQ, 0))
FROM    dbo.T_BASE_TDispatchNotice
WHERE   DeleteFlag = 0
        AND TPSN = 'YKJH201612230000'
GROUP BY TPSN
) a
[/quote] 不行,还是没有显示

110,530

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧