sql - MS Access 中的 SELECT(DISINCT)
问题描述
我在 MS Access 类型的问题中的其他 SELECT(DISINCT) 中找不到问题的解决方案,我已经为此苦苦挣扎了好几个小时;
我有一个包含两列的照片表: PhotoTypeId和PatientId。每个患者都可以多次制作多种类型的照片。
例子:
PhotoTypeId,PatientId
13,1050
14,1050
13,1050
13,1051
13,1054
描述:
患者#1050
有类型的照片13
并拍摄,14
而患者只有类型的照片。#1051
#1054
13
我想找到的是为最独特的患者拍摄的照片类型。在上面的示例中,它是照片类型13
,因为它是针对 3 个不同的患者(#1050
两次#1051
,,,#1054
)
我必须在 MS Access 中执行此操作,并且我想使用 SQL 执行此操作。我试过类似的东西:
SELECT PhotoId, COUNT(DISTINCT PatientId)
FROM Photos
GROUP BY PhotoId;
但是 MS Access 不支持 COUNT(DISTINCT x) 语法;怎么做?
解决方案
MS Access 不支持count(disitnct)
。但你可以这样做:
select top 1 photoid, count(*)
from (select distinct photoid, patientid
from photos
) as pp
group by photoid
order by count(*) desc;
MS Access 将top 1
其视为top 1 with ties
. 如果您只想要一行,请更改order by
:
select top 1 photoid, count(*)
from (select distinct photoid, patientid
from photos
) as pp
group by photoid
order by count(*) desc, photoid;
推荐阅读
- javascript - SetAttribute 函数在 Chrome 浏览器中未按预期工作
- c++ - “未定义”变量和参数
- python - 使用python(numpy)更新线性回归(梯度下降)
- javascript - SameSite Cookie 属性警告未得到修复
- amazon-web-services - ECS 任务未启动 - 已停止(CannotPullContainerError:“来自守护程序请求的错误响应在等待连接时取消”
- ios - AWSCognitoIdentityMultiFactorAuthentication 永不返回
- java - ThreadGroup.activeCount() 方法在 java 中不起作用
- javascript - 如何用javascript分割多个字符
- java - 如何从只读基类覆盖 JSON 字段并改用子字段?
- oracle - 查询多值列