sql - 如何获取每个类别 SQL 的最低 ID
问题描述
我有以下表是sql
诊断
DiagnosisID
DiagnosisDescription
成员
MemberID
FirstName
LastName
诊断分类图
DiagnosisCategoryID
DiagnosisID
会员诊断
MemberID
DiagnosisID
我需要做的是找到每个成员类别中存在的最低 DiagnosisID 的诊断
这是我到目前为止的sql:
SELECT MD.MemberID AS MID,
MD.DiagnosisID AS DID,
DM.DiagnosisCategoryID AS CID
FROM
MemberDiagnosis MD
INNER JOIN DiagnosisCategoryMap DM ON MD.DiagnosisID = DM.DiagnosisID
这给了我这个结果集:
> MID DID CID
> 1 2 2
> 1 4 3
> 3 3 3
> 3 4 3
我需要的结果集应该是这样的:
> MID DID CID
1 2 2
3 3 3
我的查询中缺少什么。
我曾尝试进行 group by,但(当然)效果不佳,因为我无法为 group by 正确聚合。
我正在使用 SQL SERVER,这就是我可以使用的全部
解决方案
使用MIN
聚合获取每个 MemberID 和 DiagnosisCategoryID 的最小 DiagnosticID,使用 GROUP BY
SELECT MD.MemberID AS MID,
MIN(MD.DiagnosisID) AS DID,
DM.DiagnosisCategoryID AS CID
FROM
MemberDiagnosis MD
INNER JOIN DiagnosisCategoryMap DM ON MD.DiagnosisID = DM.DiagnosisID
GROUP BY
MD.MemberID,
DM.DiagnosisCategoryID
推荐阅读
- forms - 如何为实体类型选择设置默认选择选项?
- python - 使用 pip3 安装的 Pandas 现在需要更长的时间
- php - 获取以特殊字符开头的键的关联数组
- sql-server - Sql-Get 时间范围从百万+行特定条件
- sql - select中的SQL动态查询
- xslt - 通过 xslt 转换时的实体问题
- android - 使用 Dagger 2 进行依赖注入
- python - 根据特定列值python删除csv中的行
- hex - Hex.encodeHexString(byte[] hexStringByteArray); 的问题
- sql - 如何通过在特定列中使用不同的值来执行结果限制?