Как присоединиться и извлечь в SQL - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть таблица, как показано ниже

. Во-первых, я хотел бы объединить таблицы с T3

T1

product  customer
A        A
B        A
C        B
B        B
A        C
B        C
.        .
.        .
.        . 

T2

customer area
A         X
B         Y
C         Z
・    ・
・    ・

T3

product  customer area
A        A        X
B        A        X
C        B        Y
B        B        Y 
A        C        Z
B        C        Z
.        .     ・
.        .     ・
.        . 

condсекунду я хочу получить клиента, у которого есть product = A

T4

product  customer  area
A        A          X
B        A          X
A        C          Z
B        C          Z
.        .      ・
.        .      ・
.        . 

③ в-третьих, я бы хотел pivot их по count

product\area  X  Y 
A
B
C

Есть ли способ объединить это? Моя попытка такая. Но это не входит join process и стержень

    WITH T AS (
    SELECT t.*,
        COUNT(CASE WHEN product = 'A' THEN 1 END) OVER (PARTITION BY customer) AS a_cnt
    FROM T1 t
)

SELECT product, customer
FROM T
WHERE a_cnt > 0;

Спасибо

1 Ответ

1 голос
/ 01 апреля 2020

Я думаю, что вы хотите:

select customer,
       sum(case when area = 'X' then 1 else 0 end) as x,
       sum(case when area = 'Y' then 1 else 0 end) as y
from t1
where exists (select 1
              from t1 tt1
              where tt1.customer = t1.customer and tt1.product = 'A'
             )
group by customer;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...