Как вернуть 0 в случае пустого результата в запросе oracle select? - PullRequest
0 голосов
/ 28 мая 2020

У меня есть запрос, в котором есть числовой столбец типа данных. В случае пустого набора результатов O / P остается пустым. В этом случае я хочу 0.

Мой запрос:

select nvl(infodata,0) 
from table1 
where group_id = 111 
  and appid in (select max(id) 
                from table1, table2 
                where status = 'A');

Теперь мой внутренний запрос в этом случае возвращает null. NVL похоже не работает в столбце инфоданных. Пожалуйста, помогите

1 Ответ

0 голосов
/ 28 мая 2020

Результат такого запроса: не выбрано ни одной строки .

Например (на основе таблиц Скотта EMP и DEPT, поскольку у меня нет вашей, и вы не опубликовали тестовый пример), этот запрос возвращает ничего :

SQL> select e.deptno
  2  from emp e
  3  where e.ename = 'Littlefoot';

no rows selected

Если он используется как подзапрос, результат будет равен текущему:

SQL> select nvl(d.dname, 'x') result
  2  from dept d
  3  where d.deptno in (select e.deptno
  4                     from emp e
  5                     where e.ename = 'Littlefoot'
  6                    );

no rows selected

Но если вы примените агрегацию (см. Строку 1), вы 'получил бы то, что хотел:

SQL> select nvl(max(d.dname), 'x') result
  2  from dept d
  3  where d.deptno in (select e.deptno
  4                     from emp e
  5                     where e.ename = 'Littlefoot'
  6                    );

RESULT
--------------
x

Как я уже сказал: работает в моем тестовом примере; может или не может на вашем. Если вы разместите образцы данных, нам будет с чем поработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...