Ich schreibe eine PL/SQL-Prozedur, die die Anzahl einer Abfrage basierend auf Datenbereichswerten angibt. Ich möchte den Datumsbereich dynamisch abrufen und habe dafür einen Cursor geschrieben.Werte in eine Sammlung für verschiedene Zeiträume einfügen
Ich benutze eine Sammlung und bekomme die Zählungen jedes Monats, das Problem, mit dem ich konfrontiert bin, ist, dass die Sammlung mit der Zählung des letzten Monats allein gefüllt ist. Ich möchte die Zählung aller Monate bekommen. Kann jemand helfen?
Dies ist das Verfahren, die ich geschrieben habe:
create or replace
Procedure Sample As
Cursor C1 Is
With T As (
select to_date('01-JAN-17') start_date,
Last_Day(Add_Months(Sysdate,-1)) end_date from dual
)
Select To_Char(Add_Months(Trunc(Start_Date,'mm'),Level - 1),'DD-MON-YY') St_Date,
to_char(add_months(trunc(start_date,'mm'),level),'DD-MON-YY') ed_date
From T
Connect By Trunc(End_Date,'mm') >= Add_Months(Trunc(Start_Date,'mm'),Level - 1);
Type T_count_Group_Id Is Table Of number;
V_count_Group_Id T_count_Group_Id;
Begin
For I In C1
Loop
Select Count(Distinct c1) bulk collect Into V_Count_Group_Id From T1
Where C2 Between I.St_Date And I.Ed_Date;
End Loop;
For J In V_Count_Group_Id.First..V_Count_Group_Id.Last
Loop
Dbms_Output.Put_Line(V_Count_Group_Id(J));
end loop;
END SAMPLE;
Sie haben es richtig gemacht. Danke ... Ich muss nun diese Werte mit utl_file in eine xls-Datei auffüllen. –