总计数记录
问题描述:
我正在使用sql server 2008 R2。我在数据库中有一张表,其中包含有关活动状态,已完成状态,非活动状态等不同状态的患者的数据。我被要求按日期让患者处于“活动”状态组。总计数记录
我已经创建以下查询:
SELECT COUNT(*) AS TotalActivePatients, CONVERT(VARCHAR(10), CreatedDtUTC,111) AS CreatedDtUTC
FROM TablePatient
WHERE MonitoringStatus LIKE 'Active'
AND IsDeleted=0
GROUP BY CONVERT(VARCHAR(10), CreatedDtUTC,111)
这给了我结果如下图所示:
TotalActivePatients CreatedDtUTC
1 2013/02/24
2 2013/02/25
4 2013/02/28
4 2013/03/01
1 2013/03/06
1 2013/03/10
3 2013/03/11
2 2013/03/14
3 2013/03/15
2 2013/03/16
但是,这是给我的特殊日期的充满活力的患者的数量。我希望达到特定日期的总活跃患者总数。
任何解决方案?
感谢
答
这会给你的跑步总...
SELECT DISTINCT COUNT(1) OVER (ORDER BY CONVERT(VARCHAR(10), CreatedDtUTC,111)),
CONVERT(VARCHAR(10), CreatedDtUTC,111) AS CreatedDtUTC
FROM TablePatient
WHERE MonitoringStatus = 'Active'
AND IsDeleted = 0
+0
PS:像没有通配符的是'=',不妨将它用于可读性。 – 2013-04-09 14:20:08
答
正确的答案将是以下几点:根据使用OVER
子句可以是
SELECT DISTINCT
CONVERT(VARCHAR(10), CreatedDtUTC,111) AS CreatedDtUTC,
COUNT(1) OVER (PARTITION BY CONVERT(VARCHAR(10), CreatedDtUTC,111)),
FROM TablePatient
WHERE MonitoringStatus = 'Active'
AND IsDeleted = 0
ORDER BY 1
其他信息在这里找到:http://technet.microsoft.com/en-us/library/ms189461.aspx
那么什么是所需的水库ult以及上述结果的底层样本数据是什么? – 2013-04-09 12:19:17
可能重复[在SqlServer中计算运行总数](http://stackoverflow.com/questions/860966/calculate-a-running-total-in-sqlserver) – 2013-04-09 12:20:10
看,在2013/02/24,有1个病人活跃,在2013年2月25日它显示有2名患者活跃,但以前的记录,即2013/02/24的患者在该日期也处于活动状态,所以总数应为3,但是因为我正在申请组通过,这只显示在该特定日期创建的2个患者是活跃的。 – Dev 2013-04-09 12:22:30