2017-05-14 7 views
4

2008年1月1日から今日までのデータが、テーブルの比率の最初の列に日付順に並べられています。毎年ゼロから始まる累積列

私は2番目の列に値を持っています。私は次のコードで累積3列目を実行することができましたが、毎年1月1日に累積的に再スタートさせる方法はわかりません。

SELECT 
    t3.Date, 
    SUM(cumul) AS cumul 
FROM (
    SELECT 
     t1.Date, 
     t1.nb, 
     SUM(t2.nb) AS cumul 
    FROM (
     SELECT 
      Ratio.Date, 
      SUM(DailyValue) AS Nb 
     FROM Ratio 
     GROUP BY Ratio.Date 
    )t1 
    INNER JOIN (
     SELECT 
      Ratio.Date, 
      SUM(DailyValue) AS nb 
     FROM Ratio 
     GROUP BY Ratio.Date 
    ) t2 
     ON t1.Date >= t2.Date 
    GROUP BY t1.Date, t1.nb 
)t3 
GROUP BY PnLDate,nb 
ORDER BY pnldate 

答えて

3

あり完璧に動作窓関数SUM

select Date, 
    sum(sum(DailyValue)) over (
     partition by year(date) order by date 
     ) as cumul 
from Ratio 
group by Date 
order by Date; 
+0

を使用して、より良い方法です、ありがとうございました! – Rich

+0

@リッチ - あなたは大歓迎です。 – GurV

+0

なぜsum(sum(Da​​ilyValue))? 'sum(Da​​ilyValue)'で十分ですか? http://sqlfiddle.com/#!15/1e120/1 – Blag