Ich habe die folgende Tabelle: Ich habe auch eine Kalender-Tabelle, wenn nötig.Oracle: Erstellen eines Bereichs im Monat zwischen zwei Daten
ID Start_dt End_dt
1 1/9/2016 3/10/2016
Erwartete Ausgabe:
ID Start_dt End_dt Month ActiveCustomerPerMonth
1 1/9/16 3/10/2016 201601 1
1 1/9/16 3/10/2016 201602 1
1 1/9/16 3/10/2016 201603 0 (Not Active end of Month)
Ich brauche das, wie ich auf einer aktuellen Abfrage bin arbeiten, die eine Case-Anweisung zu zählen, wenn der Kunde für diesen Monat aktiv war nutzen werden. Wenn das Mitglied am letzten Tag des Monats aktiv war, gilt das Mitglied für diesen Monat als aktiv. Aber ich muss für diesen Kunden monatelang rechnen können.
CASE
WHEN LAST_DAY(x.END_DT) = x.END_DT
THEN '1'
WHEN TO_CHAR(X.END_DT,'MM/DD/YYYY') != '01/01/3000'
OR X.DISCHARGE_REASON IS NOT NULL
THEN '0'
WHEN X.FIRST_ASSGN_DT IS NULL
THEN '0'
ELSE '1'
END ActiveMemberForMonth
Ich bin neu in Oracle und lese über eine Verbindung von, aber nicht verstehen, den Prozess und nicht sicher, ob dies der richtige Ort nutzen würde.
?? Bitte erläutern Sie die Anforderung genauer. Anscheinend haben Sie ein Startdatum und ein Enddatum, und Sie versuchen, mehrere Zeilen mit einem neuen "Monat" -Wert zu erzeugen ... aber was sind die Regeln? In Ihrem Beispiel sind die Daten von Januar bis Mai 2016, aber die Monate sind von Januar bis März. Was ist die Geschäftslogik dort? – mathguy
@mathguy Ich habe meine Frage aktualisiert, um die richtigen Daten zu reflektieren. Ich versuche, die Anzahl der aktiven Mitglieder pro Monat basierend auf der Logik meiner Fallanweisung zu ermitteln, muss aber feststellen, ob dieses Mitglied in diesem Monat aktiv war. Wenn das Mitglied am Ende des Monats aktiv war, wird dieses Mitglied für diesen Monat als aktiv betrachtet. – Toby
Irgendwelche Ideen oder Feedback? – Toby