2016-11-04 257 views
3

我有以下查詢:累計總數計數 - SQL

Select 
    DATEPART(m,CREDAT_0) as Month, 
    COUNT(CREDAT_0) as count, 
    SUM(COUNT(*)) OVER() as totalcount 
from 
    x3v6.CICPROD.ITMFACILIT 
group by 
    DATEPART(m,CREDAT_0) 
order by 
    Month asc 

它返回結果集:

Month count totalcount 
    1 56 2713 
    2 12 2713 
    3 39 2713 
    4 36 2713 
    5 54 2713 
    6 32 2713 
    7 27 2713 
    8 12 2713 
    9 32 2713 
    10 20722713 
    11 187 2713 
    12 154 2713 

但我希望看到一個累計的產品通過一個月的創建年。所以這樣一個列:

Month count totalcount cumtotal 
    1 56 2713   56 
    2 12 2713   68 
    3 39 2713   107 
    4 36 2713   etc.. 
    5 54 2713 
    6 32 2713 
    7 27 2713 
    8 12 2713 
    9 32 2713 
    10 20722713 
    11 187 2713 
    12 154 2713   2713 

我該如何做到這一點? (如果存在的話)。我使用T-SQL在SQL Server 2012中

謝謝

+0

您可以使用窗口函數。 – Hogan

回答

4

最後一列

... 
, COUNT(*) OVER (Order by CREDAT_0) as cumcount 
... 
+0

謝謝我試圖使用PARTITION,但並沒有意識到它不是必需的。感謝你的回答。 –

+0

@MikeMirabelli僅當您想重置計數i,e,Year over Year –

0

你可以編寫查詢象下面這樣:

sum([count]) over(order by CREDAT_0) as CumulativeCount