oracle如何显示 0 时发现没有行

标签: sql Oracle
发布时间: 2017/4/15 18:58:58
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有我通过系统日期查询问题当系统日期表中没有匹配的日期,然后它不显示为零,即使 nvl 应用在这里是我的查询的 SQL 查询

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

但它显示的数据,仅当当前日期是表中存在,但是我想要显示零,是否发现在 table.please 中没有数据帮助我做到这一点在 oracle 10g。因为几次的情况是像上面,我要显示零时找不到数据

解决方法 1:

这是很奇怪,我不会用它,它是更多的黑客︰

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) ;

和显示空值而不是 (想要) 0。使用 COALESCE() 函数可以很容易修复的以及。

官方微信
官方QQ群
31647020