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

У меня есть таблицы, подобные приведенным ниже.

И мне удалось извлечь T2, и я хотел бы объединить другие таблицы и объединить рабочий процесс.

Сначала я хотел бы вычесть всех клиентов, которые имеет product = A

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

Поэтому T2 извлекается из таблицы, как показано ниже.

product  customer
A        A
B        A
A        C
B        C

По приведенному ниже коду я могу получить T2

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

SELECT product, customer
FROM T2
WHERE a_cnt > 0;

Более того, я хотел бы присоединиться к T3, как

customer age
A        10
B        20
C        30

Поэтому Мой желаемый результат, как показано ниже

product  customer  age
A        A         10 
B        A         10
A        C         30
B        C         30

Есть ли какой-нибудь изощренный способ агрегирования рабочего процесса?

Если у вас есть мнение, пожалуйста, дайте мне знать.

Спасибо

1 Ответ

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

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

SELECT T1.PRODUCT, T1.CUSTOMER, T3.AGE
FROM T1 T1 JOIN T3 T3 ON T1.CUSTOMER = T3.CUSTOMER
WHERE EXISTS ( SELECT 1
                 FROM T1 T
                WHERE T.CUSTOMER = T1.CUSTOMER
                  AND T.PRODUCT = 'A')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...