使用 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
我在 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