2016-07-22 3 views
0

Oracleの新機能 - クライアントが「エンゲージド」とみなされたときを識別できるケース・ステートメントまたは指標の一部を作成したいと考えています。私は以下のデータを持っています。私は月ごとに数えたいと思っています。ケース・ステートメント - Oracle v.11

月のすべての会員をカウントしますが、まだ開いていると見なされるメンバーIDは累積します。私はこれがこれを行うための最善のプラットフォームであるかどうかはわかりませんが、私は尋ねると思っていました。私はSQLの外で合計することができます。これを行うには

201607 = 4 (Memberid: 1-3 & 5) 
201606 = 2 (Memberid: 4 & 5) 
Total records below = 5 

Start_Year_Month   EndDate  ID  Status 
    201607        1  OPEN 
    201607        2  OPEN 
    201607     201607  3  CLOSED 
    201606     201606  4  CLOSED 
    201606        5  OPEN 
+1

結果は何ですか? –

+1

「エンゲージド」はどのように定義されていますか?その論理は何ですか? – Nicarus

答えて

1

一つの方法は比較的簡単です:

select m.mon, count(t.id) 
from (select distinct start_year_month as mon from t) m join 
    t 
    on m.mon >= t.start_year_month and 
     (m.mon <= t.enddate or t.enddate is null) 
group by m.mon; 

(あなたのデータは非常に小さい場合を除き)数ヶ月の数が増加する。これは素晴らしいパフォーマンスを持っていません。パフォーマンスの高いソリューションはもう少し複雑です。

関連する問題