按组,检查每个唯一值是否至少有一行,其中字段的值等于另一个字段的值

时间:2014-10-20 13:59:35

标签: sql ms-access

我正在寻找一种方法(类似于that question,我为这个问题做准备,以便用我更熟悉的编程语言来表达问题)检查是否,对于每个组和对于一个变量的每个值,有一个观察值,其中第一个变量的值等于第二个变量的值。

我对SQL非常熟悉,只能通过GUI使用MS Access。我不知道如何制定问题以获得特定于SQL的结果。

我尝试了一些聚合查询,链接了多个查询和if语句的一些组合,但都没有用来产生这个结果。

示例表是:

id a b 
 1 1 1 
 1 1 2 
 1 1 3 
 2 2 3 
 2 2 3 
 2 2 4 
 3 3 3 
 3 3 4 
 3 4 5 
 4 4 4 
 4 4 4 
 4 5 5 
 5 5 6 
 5 5 7 
 5 6 8 

对于ID 1和4,结果应为 TRUE ;对于ID 2,3和5,结果应为 FALSE 。决策规则为:&#34; By id ,检查 a 的每个唯一值是否至少有一个观察值 b 的值等于 a <的值< / EM>&#34;

与另一个问题一样,答案应该只输出结果为 FALSE 的ID,或者将虚拟变量附加到指示条件是否满足的数据集中。

1 个答案:

答案 0 :(得分:1)

我们需要做两个group by

内部group by,每个(id, a)都有b个与a匹配的值{/ 1}

每个group by的外id,是否有a个值没有匹配的b

select id, max(result) <> 0 as [result2]
from
(
  select id, sum(iif(a=b, 1,0)) > 0 as [result]
  from [table]
  group by id, a
)
group by id