在Case语句中使用Multiple And而不是子查询

Dav*_*ave 2 sql t-sql sql-server

我在Case语句中使用多个And时遇到问题.

我的数据库看起来像:

Enrollment      Paperless      Validated
0               1              0
1               0              1
0               1              0
1               1              1
0               0              0
0               1              0
0               0              0
0               1              0
1               1              1
0               1              0
Run Code Online (Sandbox Code Playgroud)

所以我的查询看起来像这样:

Select
    Count(case when [Enrollment] = 1 and [Paperless] = 1 and [Validated] = 1 then 1 else 0 end) as [Paperless]
    ,Count(case when [Enrollment] = 1 and [Paperless] = 1 and [Validated] = 1 then 1 else 0 end) as [Online_Only]
    ,Count(*) as "Total"
FROM [my_table]
Run Code Online (Sandbox Code Playgroud)

Sql Fiddle:http://sqlfiddle.com/#!3/61202/5

正如您从sql小提琴中看到的那样,当case语句中的count应该是不同的时,count总是为20.我只是在我的案例陈述中做错了什么,或者我是否必须在子查询中执行这些操作?

戴夫

Aar*_*and 6

COUNT无论实际值如何,都返回true.所以使用:

SUM(CASE ...)
Run Code Online (Sandbox Code Playgroud)

代替

COUNT(CASE ...)
Run Code Online (Sandbox Code Playgroud)