Oracle PL / SQL: количество (*) между 2 таблицами - PullRequest
0 голосов
/ 23 мая 2018

Попытка подсчета разницы между двумя таблицами.

Выполнено Этот ответ, но получение 00923. 00000 - "FROM keyword not found where expected"

SELECT ( SELECT count(*) FROM XE_ERR_OVLP WHERE FLAG = 'E') 
- (SELECT count(*) FROM XE_ERR_RANG WHERE FLAG = 'H' ) as cnt;

Как этого достичь?

Ответы [ 4 ]

0 голосов
/ 29 октября 2018

Мы также можем использовать SUM только для вычисления разницы в счетах следующим образом.

select ( ( select sum(1) XE_ERR_OVLP WHERE FLAG = 'E' ) 
       - ( select sum(1) XE_ERR_RANG WHERE FLAG = 'H' ) 
    ) cnt from dual;
0 голосов
/ 23 мая 2018

Вам нужно добавить FROM DUAL Ваш запрос должен выглядеть следующим образом

SELECT ( SELECT count(*) FROM XE_ERR_OVLP WHERE FLAG = 'E') 
- (SELECT count(*) FROM XE_ERR_RANG WHERE FLAG = 'H' ) as cnt
FROM DUAL;
0 голосов
/ 23 мая 2018

Вы можете использовать UNION ALL и SUM:

SELECT SUM(c) AS cnt
FROM (SELECT 1 AS c FROM XE_ERR_OVLP WHERE FLAG = 'E'
     UNION ALL
     SELECT -1 FROM XE_ERR_RANG WHERE FLAG = 'H') sub;
0 голосов
/ 23 мая 2018

То есть:

SELECT ( SELECT count(*) FROM XE_ERR_OVLP WHERE FLAG = 'E') 
  - (SELECT count(*) FROM XE_ERR_RANG WHERE FLAG = 'H' ) as cnt 
  from dual;

В отличие от других баз данных, Oracle требует условие from.Вы можете использовать фиктивную таблицу dual для него.

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