在Access中聚合布尔数据

时间:2014-05-16 13:27:03

标签: sql ms-access ms-access-2010

是否有一个接受/更好的方法来聚合Access查询中的布尔数据?

我有两个相关的表,第一个表包含来自第二个表的数据的分组摘要。第二个表中的一个字段是布尔值yes / no标志,表示该行需要“注意”。

我计划在第二个表的各行上执行OR,并将结果存储在第一个表中,以指示表2中的“至少一个”关联行需要“关注”。

我看到Access存储False为0,True存储为-1,所以刚刚使用了SUM / GROUP BY,似乎已经实现了我的目标。每个True值(-1)求和并给出一个负数,Access似乎很乐意将其解释为True。但是我注意到似乎没有任何方法可以执行AND操作(乘法?),这让我觉得我使用的这种方法有点像黑客,可能会产生一些意想不到的后果。

2 个答案:

答案 0 :(得分:2)

为什么不使用Sum(-MyFlag)并将其与Count(*)进行比较?然后,您可以测试两个数字是否相等。

答案 1 :(得分:0)

虽然Access数据库确实在内部将Yes / No值分别存储为-1和0,但使用适当的方法处理列的实际类型并不依赖于"快捷方式&#34是一种良好的做法。 ;基于其潜在的内部价值。例如,最好使用DateAdd()DateDiff()函数,而不是[Date1]+30[Date2]-[Date1]

因此,对于布尔值,我建议使用Sum(IIf([NeedsAttention]=True,1,0))来计算[NeedsAttention] = True的行数。

相关问题