Я создаю отчет, показывающий общую прибыль каждого месяца в 2018 году, и показываю NIL, когда нет прибыли, полученной в определенные месяцы
полученная прибыль = 0,1 * Total_payment. Прибыль зарабатывают, когда услуга завершена, столбец «Total_payment» берется из таблицы «БРОНИРОВАНИЕ», мне нужно присоединиться к «БРОНИРОВАНИЮ и СЕРВИСУ», чтобы получать общую прибыль за каждый месяц, «Booking_num» является ключом для объединения «БРОНИРОВАНИЯ и СЕРВИСА»,Actual_end - это дата окончания услуги
Теперь проблема в том, что в январе, феве и авг нет прибыли. есть ли в любом случае показывать NIL в столбце прибыли ЗА ЭТОТ ТРИ МЕСЯЦА?
SELECT EXTRACT(MONTH FROM Actual_end) AS MONTH,SUM(Total_payment *0.1) AS PROFIT
FROM SERVICE,BOOKING
WHERE SERVICE.Booking_num = BOOKING.Booking_num
AND EXTRACT(YEAR FROM Actual_end) = 2018
GROUP BY EXTRACT(MONTH FROM Actual_end);
Это код показа прибыли за 9 месяцев без jan, feb и aug
MONTH PROFIT
3 88.4
4 146.1
5 112.6
6 108.3
7 102.6
9 130.3
10 72.6
12 124.9
Iожидайте, что выходной сигнал будет
MONTH PROFIT
1 NIL
2 NIL
3 88.4
4 146.1
5 112.6
6 108.3
7 102.6
8 NIL
9 130.3
10 72.6
11 124.9
12 25.2
как мне его изменить, я также попытался
WITH CALENDAR AS(
SELECT TO_CHAR(add_months(date '2018-01-01',ROWNUM -1),'MM') AS MONTH
FROM DUAL
CONNECT BY LEVEL <=12)
SELECT CALENDER.MONTH, NVL(SUM(Total_payment*0.1),null) AS PROFIT
FROM BOOKING,SERVICE,CALENDER
WHERE BOOKING.Booking_num = SERVICE.Booking_num
AND CALENDER.MONTH = EXTRACT(MONTH FROM Actual_end(+))
AND EXTRACT(MONTH FROM Actual_end) = 2018
GROUP BY CALENDER.MONTH
ВЫХОД: ВЫБОР НЕ СТРОИТ