SQL计算具有大于10的值的所有列并将其求和

Tri*_*.PS 1 sql vb.net sql-server asp.net

我想要计算我的表中具有值> = 10的所有列.这是我的表:

日期##### || Value1 || Value2 || 值3

23/04/2014 || __ 1,2 || __ 12,3 || __ 10 ||

23/04/2014 || __ 11,2 || ____ 3 || __ 10,3 ||

24/04/2014 || __ 10,9 || ____ 3 || __ 1 ||

我希望它显示:

日期##### || 数||

23/04/2014 || __ 4 ||

24/04/2014 || __ 1 ||

假设我有很多日期,我希望它只显示最后3行.

这是我的第一个代码:

Dim strCommand As String = "Select Date, count(*) as tcount from tbBooth having count(*) >= 10 group by date"
Run Code Online (Sandbox Code Playgroud)

已根据Collapsar的解决方案改为:

Dim strCommand As String = "Select t.d, sum(t.valcount) cnt from (select [date] AS d, CASE WHEN t1.ManualAssists1 >= 10 THEN 1 ELSE 0 END + CASE WHEN t1.ManualAssists2 >= 10 THEN 1 ELSE 0 END + CASE WHEN t1.ManualAssists3 >= 10 THEN 1 ELSE 0 END AS valcount from tbBooth t1) t group by t.d"
Run Code Online (Sandbox Code Playgroud)

它是有效的,但我想只显示基于ASC顺序的最后3行.反正怎么办?

谢谢你的进步......

col*_*sar 8

尝试

select t.d
     , sum(t.valcount) cnt
  from (
         select [date] AS d
              ,   CASE WHEN t1.value1 >= 10 THEN 1 ELSE 0 END
                + CASE WHEN t1.value2 >= 10 THEN 1 ELSE 0 END
                + CASE WHEN t1.value3 >= 10 THEN 1 ELSE 0 END
                       AS valcount
           from table t1
       ) t
group by t.d
     ;
Run Code Online (Sandbox Code Playgroud)