两列
问题描述:
之间的访问查询 - 验证数据我有一个有证书编号列和计划相列的表,一个证书编号有多个计划相值,例如:两列
证书#---- ---计划相
123 ---------- 1
123 ---------- 2
123 ------- --- 4
222 ---------- 1
222 ---------- 2
333 ---------- 3
我需要运行检查每个证书#有一个计划查询-Phase“1”记录,并返回没有计划阶段1的证书#
所以我的示例将返回证书#“333”,因为它没有计划阶段“1”。 我正在访问,我试过计数,和其他组合的查询,但我无法实现我的目标。
我敢打赌,这很简单,我只是想念一些东西。
谢谢, 伊丹。
答
您可以使用具有外连接的子查询来查找您要查找的内容。事情是这样的:
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
答
我在甲骨文刚刚测试了这个(我没有安装此刻访问),但它也应该在访问工作,因为没有具体的Oracle代码:
SELECT cert#
FROM certNo
WHERE cert# NOT IN
(SELECT DISTINCT cert#
FROM certNo
WHERE plan-phase = 1);
我已经对您的示例数据进行了测试。该查询所做的是创建一组具有与其关联的计划阶段1(使用子查询)的证书编号,然后选择不属于该集合的所有证书编号条目,即:没有阶段1
另外,值得注意的是certNo
将被替换为你的表的名字。
谢谢,我构建了两个查询,其中一个列出所有证书#和一个仅列出阶段1的证书,并执行了不匹配的查询。 – user1050491