SQL从count(false)值减去count(true)

时间:2014-08-16 06:31:36

标签: sql .net sql-server tsql

我有一张名为'投票'并且有一个名为status的列。状态可以具有真值或假值。

我想找到减法结果。像这样的东西

select (select count(*) from vote where status=true) - 
       (select (*) from vote where status=false)

上面的sql给出错误:" *"

附近的语法不正确

实现结果的正确语法是什么。

由于

3 个答案:

答案 0 :(得分:3)

试试这个:

select sum(
  (case when status='true' then 1 else -1 end)
)
from table

答案 1 :(得分:1)

您错过了在第二个选择中写入计数

select count(*) 

而不是

select (*)

所以你的查询将成为

select 
(select count(*) from vote where status = 'true') - (select count(*) from vote where status = 'false')

如果数据类型为bit,请尝试:

select 
    (select count(*) from vote where status = 1) - (select count(*) from vote where status = 0)

答案 2 :(得分:0)

这样的事情:

select sum(
  (case when status='true' then 1 else 0 end)-
  (case when status='false' then 1 else 0 end)
)
from vote