我有一个表有一个Certificate#列和一个Plan-Phase列,一个Certificate#有多个计划阶段值,例如:
证书#-------计划阶段
123 ---------- 1
123 ---------- 2
123 ---------- 4
222 ---------- 1
222 ---------- 2
333 ---------- 3
我需要运行一个查询,检查每个证书#是否有计划阶段“1”记录,并返回没有计划阶段1的证书#。
所以我的例子将返回cert#“333”,因为它没有Plan-Phase“1”。 我正在访问,我尝试计数,以及其他查询组合,但我无法实现我的目标。
我敢打赌这很简单,我只是遗漏了一些东西。
谢谢你, IDAN。
答案 0 :(得分:1)
我刚刚在Oracle中测试了这个(我目前没有安装Access),但它也应该在Access中工作,因为没有特定于Oracle的代码:
SELECT cert#
FROM certNo
WHERE cert# NOT IN
(SELECT DISTINCT cert#
FROM certNo
WHERE plan-phase = 1);
我已针对您的示例数据对此进行了测试。此查询的作用是创建一组证书编号,其中包含与之关联的计划阶段1(使用子查询),然后选择不属于该集合的所有cert#条目,即:没有阶段1
此外,值得注意的是,certNo
将替换为您的表格的任何名称。
答案 1 :(得分:0)
您可以使用带有外部联接的子查询来查找您要查找的内容。像这样:
SELECT qOther.*
FROM
(SELECT CertNo
FROM MyTable
WHERE PlanPhase <> 1) qOther
LEFT JOIN
(SELECT CertNo
FROM MyTable
WHERE PlanPhase = 1) qOne
ON qOther.CertNo = qOne.CertNo
WHERE qOne.CertNo IS NULL