sql - 在一个sql查询中计算大量 bool 字段?

标签 sql sql-server sql-server-2005 tsql

不确定如何解释这一点,但想象一下您有一个包含很多这样的 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/

相关文章:

c# - 如何在asp.net中动态生成HTML和CSS?

sql - 使用GROUP BY选择多个(非聚合函数)列

sql - 将 unix 时间戳转换为 Date 和 DateTime - SQL/ORACLE

SQL查询: Join two tables with where clause

web-services - 将 SQL Server 数据库中的更改与其远程客户端数据库同步

sql-server-2005 - 在SQLServer 2005函数中执行动态SQL

sql - Postgres : Simplify SQL query to get rid of subselects

asp.net - 将 ADO.Net DataTable 插入 SQL 表中

sql-server - 比较 SQL 查询的 2 个变体的性能的最佳方法是什么?

sql - 在 SQL Server 中生成序列,交叉应用性能不佳