如何使用where子句计算多个列?(SQL)



我有以下查询:

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

但是,我想在结果中包括其他列,例如保险,等式和计数,其中值为True,例如保险=True。不是表中的所有列都要计数。

我认为伪查询应该是:

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

^这不起作用,因为它选择的行只有Committees and Insurance为True

基本上,我如何计算值为True的指定列?

你可以这样做

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

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

执行顺序:

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

有类似的线程已经:如何获得多个计数与一个SQL查询?

最新更新