首页 > 解决方案 > SQL Server 计数相同结果聚合函数

问题描述

我正在使用 SQL Server,这是我当前的表:

ID ref_id 药品
1 1 药物A
2 1 药物B
3 2 药物A
4 2 药物B
5 3 药物 C

当我运行这段代码

SELECT
    ap.ref_id, 
    STRING_AGG(ap.Drug, '+') WITHIN GROUP (ORDER BY ap.Drug) AS groups
FROM
    myTable AS ap
GROUP BY 
    ap.ref_id

输出是

ref_id 药品
1 药物A+药物B
2 药物A+药物B
3 药物 C

但是我不能算相同的药物结果,将来我需要是这样的:

数数 药品
2 药物A+药物B
1 药物 C

有什么建议吗?还是我的逻辑有问题?

标签: sql-serverdatabase

解决方案


我认为在这种情况下您需要依赖子查询,例如:

SELECT 
   COUNT(ap2.ref_id), 
   ap2.groups
FROM (
  SELECT
    ap.ref_id , 
    STRING_AGG(ap.Drug, '+') WITHIN GROUP (ORDER BY ap.Drug) AS groups
  FROM
    myTable AS ap
  GROUP BY 
    ap.ref_id
) ap2
GROUP BY groups

如果您想自己尝试,这里有一个小提琴。

我很想知道是否有人想出一个更简单的解决方案。


推荐阅读