SQL Server中拆分同列相似值的GROUP BY分组
问题需求
在SQL Server中对Column5列执行GROUP BY聚合时,需避免所有值为2的记录被合并到同一组,要严格参照Groups列的规则分组:
- 第一条值为2的记录单独归为组1
- 值为46的记录归为组2
- 最后两条值为2的记录归为组3
让相同Column5值的记录在各自对应的Groups组内完成聚合。
示例数据
| Column1 | Column2 | Column3 | Column4 | Column5 | Groups |
|---|---|---|---|---|---|
| 1 | NO | A | F | 2 | 1 |
| 2 | Yes | B | C | 46 | 2 |
| 3 | NO | C | F | 2 | 3 |
| 4 | NO | D | F | 2 | 3 |
解决方案
核心思路是利用已有的Groups列作为分组依据,配合Column5一起参与分组(或直接以Groups为分组键,因为它已经明确了分组规则),就能实现需求的聚合效果。
示例SQL查询
SELECT Groups, Column5, COUNT(*) AS 记录数, -- 示例聚合:统计每组的记录数量 MIN(Column1) AS 最小Column1值 -- 可替换为你需要的其他聚合操作 FROM 你的表名 GROUP BY Groups, Column5 ORDER BY Groups;
查询结果
| Groups | Column5 | 记录数 | 最小Column1值 |
|---|---|---|---|
| 1 | 2 | 1 | 1 |
| 2 | 46 | 1 | 2 |
| 3 | 2 | 2 | 3 |
这样就实现了要求:值为2的记录分别在组1和组3独立聚合,不会被合并成一组。
内容的提问来源于stack exchange,提问作者JJHawk
相关产品推荐
相关产品推荐

