SELECT SUM在没有记录时返回一行

Jos*_*ial 13 sql oracle sum

我发现查询存在一些问题,该查询返回表中满足特定条件的所有记录的字段总和.我希望在没有记录的情况下收到"没有找到记录",但我收到的结果是空的.

SQL> SELECT * FROM DUAL WHERE 1=2;

no rows selected
SQL> SELECT SUM(dummy) FROM DUAL WHERE 1=2;

SUM(DUMMY)
----------


SQL>
Run Code Online (Sandbox Code Playgroud)

在这种情况下有没有办法不收到任何记录?

Gar*_*ers 19

"当没有记录时,我希望收到"没有找到记录",但我收到的结果是空的."

然后做

SELECT SUM(dummy) FROM DUAL WHERE 1=2 HAVING COUNT(*) > 0
Run Code Online (Sandbox Code Playgroud)

也就是说,指定您只想返回已考虑行的摘要.

SELECT SUM(dummy) FROM DUAL WHERE 1=2 HAVING SUM(dummy) IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

类似,但是如果只有dummy为null的行,则COUNT(*)将返回摘要行,而后者则不会.


Jef*_*dge 5

这个怎么样:

select my_sum
from
(SELECT SUM(dummy) as my_sum FROM DUAL WHERE 1=2)
where
my_sum is not null
Run Code Online (Sandbox Code Playgroud)