2016-07-22 11 views
0

Neu bei Oracle - Ich möchte eine Fallanweisung ODER INDIKATOR VON EINIGEN SORTIEREN erstellen, die identifizieren kann, wenn ein Client als "Engagiert" betrachtet wird. Ich habe die folgenden Daten. Ich möchte pro Monat zählen können.Fallanweisung - Oracle v.11

Zählen Sie alle Memberids für den Monat, aber sammeln Sie auch für die Memberids, die immer noch offen sind. Ich bin mir nicht sicher, ob dies die beste Plattform ist, um das zu tun, aber ich dachte, ich würde fragen. Ich kann außerhalb von SQL summieren.

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

Und welche Ergebnisse möchten Sie? –

+1

Wie definieren Sie "Engaged"? Was ist die Logik dafür? – Nicarus

Antwort

1

Eine Möglichkeit, dies zu tun, ist relativ einfach:

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; 

Diese nicht große Leistung wie die Anzahl der Monate erhöht hat (es sei denn, Ihre Daten ganz klein ist). Eine performantere Lösung ist ein bisschen komplizierter.

Verwandte Themen