2013-04-09 63 views
0

我有以下查询:如何使用where子句计算多个列? (SQL)

SELECT count(Committees) 
    FROM [Annual Questionnaire] 
    WHERE Committees=TRUE; 

然而,我想包括其他列中的结果如保险,平等并在数值为真时计算例如保险=真。并非表格中的所有列都必须计算在内。

我觉得伪查询应为:

SELECT count(Committees), 
     count(Insurance) 
FROM [Annual Questionnaire] 
WHERE Committees=TRUE 
    AND Insurance=TRUE; 

^这不工作,因为它选择行只有委员会和保险是真

基本上,我怎么算指定值为真的列?

回答

3

,你可以这样做

SELECT 
    SUM(IIF(Committees=True, 1, 0)) 
    , SUM(IIF(Insurance=True, 1, 0)) 
FROM [Annual Questionnaire] 
+0

感谢。我在sql上有点生疏。对于奖励积分,这是什么情况下的语法? http://stackoverflow.com/questions/12789396/how-to-get-multiple-counts-with-one-sql-query – Sheldon 2013-04-09 10:23:07

+1

访问不具有大小写语法 – 2013-04-09 10:45:20

1

如果您在WHERE子句中同时指定了这两个列,则只会返回两列均为列的行为true。 请记住,执行的顺序是在Select之前执行的Where子句,因此它将根据您拥有的数据过滤掉数据,然后选择您要求它选择的任何内容。

这是执行的顺序:

FROM clause 
WHERE clause 
GROUP BY clause 
HAVING clause 
SELECT clause 
ORDER BY clause 

已经有类似的主题:How to get multiple counts with one SQL query?