根据第二列的值组合获取计数

时间:2019-10-10 19:56:47

标签: sql sql-server

我的表格格式如下:

Id Code
1   A
1   B
2   A
3   A
3   C
4   A
4   B

我正在尝试获取如下代码组合的数量:

Code Count
A,B     2  -- Row 1,2 and Row 6,7 
A       1  -- Row 3
A,C     1  -- Row 4

我无法获得组合结果。我所能做的只是分组,但我没有获得组合ID的数量。

1 个答案:

答案 0 :(得分:0)

您需要以某种方式汇总行,然后执行两次。代码看起来像这样:

select codes, count(*) as num_ids
from (select id, group_concat(code order by code) as codes
      from t
      group by id
     ) id
group by code;

group_concat()的拼写可能是listagg()string_agg(),具体取决于数据库。

在SQL Server中,使用string_agg()

select codes, count(*) as num_ids
from (select id, string_agg(code, ',') within group (order by code) as codes
      from t
      group by id
     ) id
group by code;