使用 GROUP BY 将表与有关类别的列绑定在一起

Binding together tables using GROUP BY with columns about category

我在 SQL Server 2014 版本中处理聚合列时遇到问题,该版本不支持 GROUP_CONCAT 功能。我的任务是创建查询,通过其公共列将几个 tables 绑定在一起,因此假设将有两个示例 tables.

Table A(类别 1)

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

Table B(第 2 类)

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

请注意两个 table 上的第一个记录是相同的。

我想获得以下结果:

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

category_id 列始终由每个 table 硬编码的 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

但是 table 中的某些条目可能会重复,对于那些行,我想用标识 table 的值填充 secondary_column_id(在本例中为 2)

这看起来像 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