Связывание таблиц с помощью GROUP BY со столбцами о категории - PullRequest
0 голосов
/ 25 апреля 2020

У меня проблема с дескриптором агрегатных столбцов в SQL Server 2014 версии, которая не поддерживает функцию GROUP_CONCAT. Моя задача - создать запрос, который связывает несколько таблиц по общим столбцам, поэтому предположим, что будет два примера таблиц.

Таблица A (Категория 1)

| name | size |
+------+------+
| aaa  | 2    |
| bbb  | 3    |

Таблица B ( Категория 2)

| name | size |
+------+------+
| aaa  | 2    |
| ccc  | 7    |

Обратите внимание, что первые записи в обеих таблицах одинаковы.

Я хочу получить следующие результаты:

| name | size | category_id | secondary_category_id |
+------+------+-------------+-----------------------+
| aaa  | 2    | 1           | 2                     |
| bbb  | 3    | 1           | NULL                  |
| ccc  | 7    | 2           | NULL                  |

category_id столбец всегда заполняется идентификатором, который жестко закодирован для каждой таблицы, например:

SELECT name, size, '1' AS category_id 
FROM Table_A 
GROUP BY name, size

UNION ALL

SELECT name, size, '2' AS category_id 
FROM Table_B 
GROUP BY name, size

Но некоторые записи в таблицах могут дублироваться, и для этой строки я хочу заполнить secondary_column_id таблицей определения значений (в этом дело 2)

1 Ответ

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

Это выглядит как full join:

select coalesce(c1.name, c2.name) as name,
       coalesce(c1.size, c2.size) as size,
       (case when c1.name is not null then 1 else 2 end) as category_id,
       (case when c1.name is not null and c2.name is not null then 2 end) as secondary_category_id
from category1 c1 full join
     category2 c2
     on c1.name = c2.name and c1.size = c2.size
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...