sql-server - 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 |
有什么建议吗?还是我的逻辑有问题?
解决方案
我认为在这种情况下您需要依赖子查询,例如:
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
如果您想自己尝试,这里有一个小提琴。
我很想知道是否有人想出一个更简单的解决方案。
推荐阅读
- python - 在 Windows 和 MacOS 中运行 shell 脚本
- amazon-web-services - 如何托管使用 MongoDB 的 Node/Express 数据库中开发的 Restful-API
- sql-server - 如何在我的机器上找到 odbc jar
- swift - 如何在 Swift 5 中解析来自 Alamofire 的模型结构的 JSON 响应?
- bit.dev - 如何在未定义的情况下将 Bit.dev 与外部浏览器库一起使用
- python - 无法从“torch.utils.data.dataloader”导入名称“_worker_manager_loop”
- asp.net-mvc - An issue with IDictionary in Asp Net Core uri parameters
- python - 如何以更快的方式找到每对图像之间的欧几里得距离
- c# - 检测是否启用了模拟位置(GPS 欺骗)并请求禁用
- python - 摆脱 Python 静态/类属性的 PyCharm 警告