我正在寻找一种方法(类似于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,或者将虚拟变量附加到指示条件是否满足的数据集中。
答案 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