选择TOP x记录并返回计数

时间:2014-11-19 03:40:25

标签: sql tsql sql-server-2008-r2

我使用SQLServer 2008r2并拥有此查询:

SELECT top 18 id, obsDate,impact FROM diseaseHits WHERE diseaseID=2 AND pCode=3352 AND obsDate <= '2014/11/5 11:30:00 PM'

返回:

1
1
0
1
0
0
1
0
1
0
1
0
0
1
1
0
0
1

现在我想做的就是SUM这些。影响是一个int。我似乎无法让它工作。我不能做一个SELECT TOP 20 COUNT ....所以我尝试了这个:

SELECT count(impact) FROM DiseaseHits where DiseaseHits.ID IN(SELECT top 20 id FROM diseaseHits WHERE diseaseID=2 AND pCode=3352 AND obsDate <= '2014/11/5 11:30:00 PM' ORDER by obsDate desc ) ;

但没有运气。我怎样才能做到这一点?

谢谢

2 个答案:

答案 0 :(得分:2)

我认为你可以使用子查询:

select sum(impact)
from (select top 18 id, obsDate, impact
      from diseaseHits
      where diseaseID = 2 AND pCode = 3352 AND obsDate <= '2014/11/5 11:30:00 PM'
     ) t;

我还建议您使用更标准的日期格式,例如'2014-11-05 11:30:00 PM'

答案 1 :(得分:0)

试试这个,

这是你想做的吗。

SELECT top 18 id, obsDate, impact, count(id) OVER() AS countOfid FROM diseaseHits WHERE diseaseID=2 AND pCode=3352 AND obsDate <= '2014/11/5 11:30:00 PM'
相关问题