Выбор строк на основе условного запроса к другой таблице в Oracle

#sql #oracle

#sql #Oracle

Вопрос:

У меня есть две таблицы в Oracle, customer_details и account_details.

   customer_details
  cus_id      rating
  ABC12       RT
  CED34      
  FRTG4       RT
  RET43     
  ERT45       VF

  account_details
  cus_id      account_type      scas_code
  ABC12       SA                0011
  DEF34       CA                009
  CED34       SA                0011
  RET43       FD                008
  ERT45       SA                0011
  

Я хочу DISTINCT scas_code из таблицы, account_details где rating должно быть значение null из customer_details таблицы. Мой желаемый результат запроса следующий

   scas_code
  0011
  008
  

Как я могу написать этот запрос?

Ответ №1:

Вы могли бы использовать логику exists здесь:

 SELECT DISTINCT scas_code
FROM account_details ad
WHERE EXISTS (SELECT 1 FROM customer_details cd
              WHERE cd.cus_id = ad.cus_id AND cd.rating IS NULL);
  

ДЕМОНСТРАЦИЯ

Ответ №2:

Вы можете попробовать следующее —

 select distinct scas_code
from account_details a inner join customer_details b on a.cust_id=b.cust_id
where rating is null