SQL Выберите строки со значениями столбцов, которые соответствуют значениям столбцов в другой таблице

У меня есть таблица A, которая содержит столбцы «Идентификатор клиента» и «МЕСЯЦ», а также столбец «ПРОДУКТ», который всегда один и тот же, например. Продукт X

У меня также есть таблица B, которая содержит столбцы «CustomerID» и «MONTH», но эта таблица включает в себя множество продуктов, а не только X.

Я пытаюсь выбрать строки из таблицы B (много продуктов), чьи «CustomerID» И «MONTH» соответствуют строке в таблице A, так что я получаю продукты, которые покупатель купил в том же месяце, что и он купил Продукт X

Я пробовал следующее:

PROC SQL;
   CREATE TABLE DATA.RESULT AS
   SELECT LOTS.Customer_ID, 
          LOTS.Product_Name, 
          LOTS.Order_Revenue, 
          LOTS.Month_Ordered
   FROM DATA.Family_Holiday_Orders_Plus AS LOTS
   INNER JOIN DATA.X AS X1 ON (X1.Customer_ID = LOTS.Customer_ID)
   INNER JOIN DATA.X AS X2 ON (X2.Month_Ordered = LOTS.Month_Ordered);
QUIT;

person JaJa    schedule 05.04.2015    source источник


Ответы (1)


Если я правильно понимаю, вы хотите выбрать все продукты из LOTS, где существует другая строка в DATA.X с тем же значением Customer_ID и Month_Ordered.

SELECT LOTS.Customer_ID, 
       LOTS.Product_Name, 
       LOTS.Order_Revenue, 
       LOTS.Month_Ordered
FROM DATA.Family_Holiday_Orders_Plus AS LOTS
WHERE EXISTS (
    SELECT 1 FROM DATA.X AS X1 WHERE X1.Customer_ID = LOTS.Customer_ID
    AND X1.Month_Ordered = LOTS.Month_Ordered
)
person FuzzyTree    schedule 05.04.2015