2012-01-19 15 views
8

Hedef: Her ayın sonunda tüm ifadeler için toplam/toplu çalıştırma.Oracle Aylara göre toplam yuvarlama veya çalışma

Kodu:

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') 

Akım Çıkışı:

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 

İstenilen çıktı: Çalıştırdığınız toplam istedikleri gibi

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

İyi biçimlendirilmiş bir soru. GG. –

cevap

12

geliyor. Bunun için analitik SUM işlevini kullanabilirsiniz.

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

Toplam koşu ... evet, aradığım şey;) – Cimplicity

2

Alt sorgu olmadan aynı yuvarlama toplamlarını sağlayan alternatif bir çözüm.

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')