0

我正在使用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 

但是,這是給我的特殊日期的充滿活力的患者的數量。我希望達到特定日期的總活躍患者總數。

任何解決方案?

感謝

+0

那麼什麼是所需的水庫ult以及上述結果的底層樣本數據是什麼? – 2013-04-09 12:19:17

+3

可能重複[在SqlServer中計算運行總數](http://stackoverflow.com/questions/860966/calculate-a-running-total-in-sqlserver) – 2013-04-09 12:20:10

+0

看,在2013/02/24,有1個病人活躍,在2013年2月25日它顯示有2名患者活躍,但以前的記錄,即2013/02/24的患者在該日期也處於活動狀態,所以總數應爲3,但是因爲我正在申請組通過,這隻顯示在該特定日期創建的2個患者是活躍的。 – Dev 2013-04-09 12:22:30

回答

0

這會給你的跑步總...

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

0

正確的答案將是以下幾點:根據使用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