Ich habe unten Abfrage geschrieben, um eine Datumssequenz zu generieren, in der Datumsbereiche 12 Monate umfassen und Der erste Datumsbereich beginnt mit der Spalte von_Datum und endet mit TO_DATE. zum Beispiel für from_date ITP_no 1 1-Apr-07 und to_date 31-Mar-09 dann shoud op ITP_NO 1. April 2007- März 2008 1. April 2008- MAR 2009Wie generiere ich Datumsbereiche in SQL, vorausgesetzt, To_date to to_date von einer gegebenen Tabelle?
Below is input table
ITP_NO BILL_AMOUNT FROM_DATE TO_DATE
1 58 1-Apr-07 31-Mar-08
1 58 1-Apr-07 31-Mar-08
1 58 1-Apr-07 31-Mar-08
1 58 1-Apr-07 31-Mar-08
1 58 1-Apr-07 31-Mar-08
1 116 1-Jan-09 31-Dec-11
Abfrage sein:
SELECT ITP_NO ,level,
BILL_AMOUNT ,From_Date,TO_DATE,
TO_CHAR(ADD_MONTHS(From_Date, (LEVEL - 1) * 12), 'MON-YYYY') || ' - '||
TO_CHAR(ADD_MONTHS(From_Date, LEVEL * 12)-1, 'Mon-YYYY') as End_Date
FROM (
SELECT ITP_NO,
BILL_AMOUNT,
From_Date,
TO_DATE
FROM test123
)
CONNECT BY ADD_MONTHS(From_Date, (LEVEL - 1) * 12)<TO_DATE
Ausgang gegeben durch:
ITP_NO LEVEL BILL_AMOUNT FROM_DATE TO_DATE END_DATE
1 1 58 1-Apr-07 31-Mar-08 Apr-07-Mar-08
1 1 58 1-Apr-07 31-Mar-08 Apr-07-Mar-08
1 1 58 1-Apr-07 31-Mar-08 Apr-07-Mar-08
1 1 58 1-Apr-07 31-Mar-08 Apr-07-Mar-08
1 1 58 1-Apr-07 31-Mar-08 Apr-07-Mar-08
1 2 116 1-Jan-09 31-Dec-11 Jan-10-Dec-10
1 3 116 1-Jan-09 31-Dec-11 Jan-11-Dec-11
1 3 116 1-Jan-09 31-Dec-11 Jan-11-Dec-11
1 3 116 1-Jan-09 31-Dec-11 Jan-11-Dec-11
1 2 116 1-Jan-09 31-Dec-11 Jan-10-Dec-10
1 3 116 1-Jan-09 31-Dec-11 Jan-11-Dec-11
1 3 116 1-Jan-09 31-Dec-11 Jan-11-Dec-11
1 3 116 1-Jan-09 31-Dec-11 Jan-11-Dec-11
1 2 116 1-Jan-09 31-Dec-11 Jan-10-Dec-10
1 3 116 1-Jan-09 31-Dec-11 Jan-11-Dec-11
1 3 116 1-Jan-09 31-Dec-11 Jan-11-Dec-11
1 3 116 1-Jan-09 31-Dec-11 Jan-11-Dec-11
1 2 116 1-Jan-09 31-Dec-11 Jan-10-Dec-10
e RWARTETE O/P
ITP_NO BILL_AMOUNT FROM_DATE TO_DATE END_DATE
1 58 1-Apr-07 31-Mar-08 Apr-07- Mar-08
1 58 1-Apr-07 31-Mar-08 Apr-07- Mar-08
1 58 1-Apr-07 31-Mar-08 Apr-07- Mar-08
1 58 1-Apr-07 31-Mar-08 Apr-07- Mar-08
1 58 1-Apr-07 31-Mar-08 Apr-07- Mar-08
1 116 1-Jan-09 31-Dec-11 Jan-09- Dec-10
1 116 1-Jan-09 31-Dec-11 Jan-11- Dec-11
Stehen Sie mit MySQL oder Oracle? (Markieren Sie keine Produkte, die nicht beteiligt sind.) – jarlh
@jarlh M unter Verwendung von Oracle 10G – KD29
Warum möchten Sie so viele Datensätze für ITP_NO 58 .. der Datensatz ist nur Duplikate. Versuchen Gruppierung von und die Reihenfolge von Enddatum – XING