我有一个SQL查询,其中我将sysdate传递给查询问题是当表中没有与sysdate匹配的日期时,即使这里应用了nvl,它也不显示零,这是我的查询
select * from molasses where trunc(trn_dte) = trunc(sysdate)
但是它仅在表中存在当前日期时显示数据,但是如果表中未找到数据,我想显示零。请帮助我在oracle 10 g中执行此操作。因为有时候情况像上面一样,当找不到数据时我必须显示零
这很奇怪,我不会使用,它更像是一个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()功能也可以轻松解决该问题。
COALESCE()