Как выбрать и извлечь с помощью существует в oracle SQL - PullRequest
0 голосов
/ 03 августа 2020

Я бы хотел выбрать клиента, у которого есть type=a и product=1

customer type product
A       a       1
A       b       1  
A       c       2 
B       b       2
B       b       1 
C       c       1
C       c       1

Поэтому мой желаемый результат выглядит следующим образом

customer type product
A       a       1
A       b       1  
A       c       2 

Я хотел бы добавить селектор product = 1 в следующем примере.

SELECT t1.customer, t1.type ,t1.product
FROM yourTable t1
WHERE EXISTS (SELECT 1 FROM yourTable t2 WHERE t2.customer = t1.customer AND t2.type = 'a');

Так как я начальный уровень. если у кого-то есть мнение, дайте мне знать. Спасибо

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Вот версия по вашему требованию

WITH CTE_yourTable AS
(
SELECT CUSTOMER
FROM yourTable
WHERE 
type = 'a' AND
product = 1)
SELECT t1.customer, t1.type, t1.product
FROM yourTable t1
WHERE EXISTS (SELECT 1
              FROM CTE_yourTable t2
              WHERE t2.customer = t1.customer 
             );
0 голосов
/ 03 августа 2020

Вы можете добавить условие в подзапрос:

SELECT t1.customer, t1.type, t1.product
FROM yourTable t1
WHERE EXISTS (SELECT 1
              FROM yourTable t2
              WHERE t2.customer = t1.customer AND
                    t2.type = 'a' AND
                    t2.product = 1
             );

Если вам нужны только клиенты:

select customer
from yourtable
group by customer
having sum(case when type = 'a' and product = 1 then 1 else 0 end) > 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...