不确定如何解释这一点,但想象一下您有一个包含很多这样的 bool 字段的表......
表:汽车
列:
Automatic: boolean
Silver: boolean
American: boolean
Noisy: boolean
Smelly: boolean
fast: boolean
(愚蠢的字段,其中大多数实际上不会是 bool 值,而只是一个例子)
我需要做的是生成这些字段的列表,每个字段旁边都有许多搜索结果,因此,如果数据库中有 100 辆银色汽车和 57 辆美国汽车,则该列表可能看起来有点像这样。 .
Automatic: (150)
Silver (100)
American (57)
Noisy (120)
Smelly (124)
fast (45)
所以,它基本上就像一个过滤器列表,如果用户单击“银色”,他们会将搜索范围缩小到仅显示银色汽车,并且他们知道他们将获得 100 个结果。所有其他过滤器旁边的数字都会减少,因为我们已经过滤掉了所有非银色的汽车。
计算一个字段的出现次数很容易......
从自动 = true 的汽车中选择 COUNT(*) 个;
例如,...会给我第一行。但我不想为每个过滤器执行一条 SQL 语句,因为可能有超过 30 个过滤器。我见过很多网站都这样做,所以它一定比我想象的要容易。
任何帮助将不胜感激:)
乔恩
最佳答案
使用 sql server 2008,当尝试对数据类型位的字段求和时,会发生以下错误:
Msg 8117, Level 16, State 1, Line 10
Operand data type bit is invalid for sum operator.
所以你可以尝试这个:
SELECT SUM(CAST(Automatic AS TINYINT)) as Automatic, SUM(CAST(Smelly AS TINYINT)) as Smelly, SUM(CAST(American AS TINYINT)) as Japanese FROM YourTable
关于sql - 在一个sql查询中计算大量 bool 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1794012/