Как передать счет как условие IF на ORACLE - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу использовать результат COUNT в качестве условия IF на ORACLE, например, этот псевдокод на Oracle:

select count(d.number_people) as counted_people
from dual d
if counted_people = 1 then
dbms_output.put_line('Have just one people on this column.'
end if;

Этот синтаксис неправильный, я знаю, как мне сделать это правильно?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

COUNT - результат агрегации.Вы можете сосчитать все строки в таблице, все строки, которые соответствуют определенным критериям и т. Д. В качестве результата агрегирования вы можете использовать его в предложении SELECT, в предложении HAVING и в предложении ORDER BY.(Вы не можете использовать его в предложении WHERE, потому что предложение WHERE имеет дело с данными в строках таблицы. Вместо этого вам нужно предложение HAVING, которое касается результатов агрегации.)

Пример предложения SELECT / ORDER BY

select
  supplier_id,
  case when count(*) < 20 then 'less then 20 orders'
       when count(*) < 40 then 'less beteen 20 and 40 orders'
       else '40 or more orders'
  end as number_of_orders
from orders
where order_date >= date '2018-01-01'
group by supplier_id
order by count(*) desc;

Пример предложения HAVING

select sex, count(*)
from members
group by sex
having count(*) > 20;
0 голосов
/ 18 декабря 2018

Использование SELECT ... INTO variable ...

Демо: https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=610d02797857539be5fcd4afdbd7d9e6

DECLARE 
  cnt number;
BEGIN
  select count(*) INTO cnt from dual;
  IF cnt = 1 THEN
     DBMS_OUTPUT.PUT_LINE('Exaclty one record');
  ELSE
     DBMS_OUTPUT.PUT_LINE('0 or more than 1  record');
  END IF;
END;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...