に基づいて時系列パーティションを合計:のOracle SQL - 私はこのようになり、データ・セットで働いて月
MTD | ID | Active
-----------------------
01-APR-16 | A | y
01-MAY-16 | A | y
01-JUN-16 | A | n
01-JUL-16 | A | y
01-AUG-16 | A | n
01-APR-16 | B | n
01-MAY-16 | B | y
01-JUN-16 | B | y
01-JUL-16 | B | y
01-AUG-16 | B | y
私は数をカウントするデータ・セットにカウント列を追加したいと思います現在のMTD後にIDがアクティブ( 'y')した回数。所望の出力は次のようになります。私は考えてい
MTD | ID | Active | COUNT
-------------------------------
01-APR-16 | A | y | 2
01-MAY-16 | A | y | 1
01-JUN-16 | A | n | 1
01-JUL-16 | A | y | 0
01-AUG-16 | A | n | 0
01-APR-16 | B | n | 4
01-MAY-16 | B | y | 3
01-JUN-16 | B | y | 2
01-JUL-16 | B | y | 1
01-AUG-16 | B | y | 0
クエリは次のとおりです。私は窓の合計に現在のレコードのMTDに、各レコードのMTDを比較するかどうかはわかりません
SELECT
MTD,
ID,
ACTIVE,
SUM(CASE WHEN MTD > (current records MTD)
AND ACTIVE = 'y' THEN 1 ELSE 0 END)
OVER (PARTITION BY ID)
as COUNT
。ケース・ステートメントの最初の行をどのように修正できますか?
が私に
ライアン・バーカー
おそらくMTDでわずか '順はIDの後にオーバー以内desc'? – xQbert