2012-01-19 11 views
8

लक्ष्य: प्रत्येक महीने के अंत में सभी विवरणों के लिए रोलिंग/रनिंग कुल।महीने के दौरान ओरेकल रोलिंग या रनिंग योग

कोड:

select 
    TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM') AS MNTH, 
    COUNT(ACTHX.INVOICE) as STMTS 
from ACTHX 
group by 
    TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM') 
ORDER BY 
    TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM') 

वर्तमान आउटपुट:

MNTH  STMTS 
7/1/2009 1 
10/1/2010 4 
6/1/2011 26 
9/1/2011 211 
10/1/2011 163 
11/1/2011 119 

वांछित उत्पादन:

MNTH  STMTS 
7/1/2009 1 
10/1/2010 5 
6/1/2011 31 
9/1/2011 242 
10/1/2011 405 
11/1/2011 524 
+0

एक अच्छी तरह से गठित प्रश्न। जीजी। –

उत्तर

12

ऐसा लगता है कि आपके द्वारा चलाए जा कुल चाहते हैं। आप इसके लिए विश्लेषणात्मक SUM फ़ंक्शन का उपयोग कर सकते हैं।

select mnth, 
     sum(stmts) over (order by mnth) stmts 
    from (select TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM') AS MNTH, 
       COUNT(ACTHX.INVOICE) as STMTS 
      from ACTHX 
     group by TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM')) 
ORDER BY mnth 
+0

कुल रनिंग ... हाँ, यही वह है जिसे मैं ढूंढ रहा हूं;) – Cimplicity

2

एक वैकल्पिक समाधान जो उप क्वेरी के बिना समान रोलिंग योग प्रदान करता है।

SELECT 
     DISTINCT TRUNC(ACTHX.STMT_HX_STMT_DATE,'MM') AS MNTH 
     ,count(ACTHX.INVOICE) OVER (ORDER BY TRUNC(ACTHX.STMT_HX_STMT_DATE,'MM')) AS STMTS 
    FROM ACTHX 
    ORDER BY 
     TRUNC(ACTHX.STMT_HX_STMT_DATE,'MM') 
संबंधित मुद्दे