Я пытаюсь написать процедуру, которая генерирует ежемесячный бизнес-отчет.Мне нужно показать общее количество бизнес-аренды и CarRentalSites, которые имеют бизнес-аренды в этом месяце.Должны отображаться только месяцы с арендной платой за бизнес, а порядок месяцев должен быть от самого раннего до самого позднего, а порядок CarRentalSites должен соответствовать атрибуту CarRentalSiteName.
Я написал следующее, чтобы сделать это
create or replace procedure MonthlyBusinessRentalsReport as
CURSOR d_cursor is
Select Extract(year from Rentals.RentalDate) as oYear, Extract(month from Rentals.RentalDate) as oMonth, Count(*) as t
from Rentals where Rentals.Status = 'BUSINESS'
Group By Extract(year from Rentals.RentalDate), Extract(month from Rentals.RentalDate)
Order By Extract(year from Rentals.RentalDate), Extract(month from Rentals.RentalDate);
d_res d_cursor%ROWTYPE;
CURSOR d_retail is
Select Extract(year from Rentals.RentalDate) as oYear, Extract(month from Rentals.RentalDate) as oMonth, CarRentalSite.CarRentalSiteName, numOfDays
from Rentals INNER JOIN CarRentalSite on Rentals.CarRentalSiteId=CarRentalSite.CarRentalSiteId where Rentals.Status='BUSINESS'
Group By Extract(year from Rentals.RentalDate), Extract(month from Rentals.RentalDate), CarRentalSite.CarRentalSiteName, numOfDays
Order By Extract(year from Rentals.RentalDate), Extract(month from Rentals.RentalDate), CarRentalSite.CarRentalSiteName, numOfDays;
d_res2 d_retail%ROWTYPE;
BEGIN
OPEN d_retail;
Fetch d_retail into d_res2;
for d_res in d_cursor loop
dbms_output.put_line('Total Business Rentals in ' || d_res.oYear || '-' || d_res.oMonth || ': ' || d_res.t);
dbms_output.put_line('In Car Rental Sites:');
loop
dbms_output.put_line('- ' || d_res2.CarRentalSiteName || ': ' || d_res2.numOfDays || ' days');
Fetch d_retail into d_res2;
exit when d_retail%NOTFOUND or d_res2.oYear != d_res.oYear or d_res2.oMonth != d_res.oMonth;
end loop;
end loop;
Close d_retail;
END MonthlyBusinessRentalsReport;
/
show errors;
BEGIN
MonthlyBusinessRentalsReport;
End;
/
Это дает мне вывод, но не то, что ожидалось, мне нужна помощь, чтобы исправить это.Мой вывод против ожидаемого это
---- Result of Procedure 2:
Total Business Rentals in 2018-1: 2
In Car Rental Sites:
- Hertz: 15 days
Expected:
Total Business Rentals in 2018-1: 2
In Car Rental Sites:
- Hertz: 36 days
---- Result of Procedure 2:
- Hertz: 21 days
Total Business Rentals in 2018-2: 2
In Car Rental Sites:
- Alamo: 10 days
Expected:
Total Business Rentals in 2018-2: 2
In Car Rental Sites:
- Alamo: 10 days
- Hertz: 14 days
---- Result of Procedure 2:
- Hertz: 14 days
Total Business Rentals in 2018-4: 1
In Car Rental Sites:
Expected:
Total Business Rentals in 2018-4: 1
In Car Rental Sites:
- Enterprise: 2 days
---- Result of Procedure 2:
- Enterprise: 2 days
Total Business Rentals in 2018-5: 3
In Car Rental Sites:
- Avis: 2 days
- Budget: 3 days
Expected:
Total Business Rentals in 2018-5: 3
In Car Rental Sites:
- Avis: 2 days
- Budget: 3 days
- Hertz: 25 days
---- Result of Procedure 2:
- Hertz: 25 days
Total Business Rentals in 2018-6: 1
In Car Rental Sites:
Expected:
Total Business Rentals in 2018-6: 1
In Car Rental Sites:
- Alamo: 10 days
Это таблицы и файлы данных, которые будут использоваться
Файл данных Файл таблиц