原因
首先,这篇博客写出了这个问题出现的原因:
链接: nvl(sum(字段),0) 的时候,能展示数据0,但是group by 下某个伪列的时候,查不到数据(转载)
这里我也总结下原因:没有记录返回则nvl不起作用
那如何解决这种问题呢?
解决方案
为了使其生效,只需要让sql返回记录就可以了。
那如何返回记录呢,这里我们可以使用连接join,使用关联字段,查出关联字段记录然后左连接,下面为了便于理解,举个例子。
SELECT orgName, nvl(contractPrice,0) from XX where 1 = 2
返回结果是 null, null
我们想要的结果是 null , 0
下面使用连接join,使用关联字段,查出关联字段记录然后左连接
SELECT T1.orgName,nvl(contractPrice,0) from (
SELECT orgName from XX2
) t1
LEFT JOIN (
SELECT orgName, nvl(contractPrice,0) contractPrice from XX where 1 = 2
) t2 on T1.orgName = T2.orgName ;
返回结果是 XX , 0
附:参考案例:链接: link
总结
没有记录返回则nvl不起作用