小编典典

找不到行时如何显示0

sql

我有一个SQL查询,其中我将sysdate传递给查询问题是当表中没有与sysdate匹配的日期时,即使这里应用了nvl,它也不显示零,这是我的查询

select * from molasses
where trunc(trn_dte) = trunc(sysdate)

但是它仅在表中存在当前日期时显示数据,但是如果表中未找到数据,我想显示零。请帮助我在oracle 10
g中执行此操作。因为有时候情况像上面一样,当找不到数据时我必须显示零


阅读 133

收藏
2021-04-22

共1个答案

小编典典

这很奇怪,我不会使用,它更像是一个hack:

SELECT col1, col2, ..., colN              --- numeric columns
FROM molasses
WHERE trunc(trn_dte) = trunc(sysdate)

UNION ALL

SELECT 0, 0, ..., 0
FROM dual
WHERE NOT EXISTS
      ( SELECT *
        FROM molasses
         WHERE trunc(trn_dte) = trunc(sysdate)
      ) ;

一个人只是想知道当表中只有一行并且所有值都是零时,应用程序/用户将理解什么。


我认为这也行得通:

SELECT m.col1, m.col2, ..., m.colN              --- numeric columns
FROM dual LEFT JOIN molasses m
  ON trunc(m.trn_dte) = trunc(sysdate) ;

并显示Null(而不是(想要的)0)。使用该COALESCE()功能也可以轻松解决该问题。

2021-04-22