Кодът, който публикувахте, няма from
клауза, но казахте, че просто не сте я включили. Той обаче има where
клауза - която е на грешното място. Той също така сравнява дата с низ, което не е добра идея, тъй като разчита на имплицитно преобразуване и NLS настройки на сесията. (Може би си мислите, че може да сравни фиксирания низ с датата, която току-що сте преобразували в низ - но това не е така, поне на същото ниво на заявка, и така или иначе би било неефективно в този случай.) И както вие използвате агрегатна функция, имате нужда от клауза за групиране...
Изглежда, че искате:
SELECT REPLACE(CM_NAME, '/', ' ') as CM_NAME,
TO_CHAR(Booking_Date,'MM/DD/YYYY') AS Booking_Date,
sum(Air_Revenue) as TTL_AIRFARE,
sum(Room_Revenue) as TTL_ROOM,
sum(Car_Revenue) AS TTL_CAR,
sum(Activity_Revenue) as TTL_ACTIVITY,
0 as TTL_CRUISE
FROM your_table
WHERE Booking_Date = DATE '2018-03-20'
GROUP BY REPLACE(CM_NAME, '/', ' '),
Booking_Date
или ако искате вчерашната дата, без да се налага да я посочвате, можете да използвате:
WHERE Booking_Date = TRUNC(sysdate - 1)
GROUP BY REPLACE(CM_NAME, '/', ' '),
Booking_Date
Това ще съответства само на редове, където Booking_Date
е точно в полунощ. Ако действително включва други времена, можете да направите:
WHERE Booking_Date >= TRUNC(sysdate - 1)
AND Booking_Date < TRUNC(sysdate)
GROUP BY REPLACE(CM_NAME, '/', ' '),
TO_CHAR(Booking_Date,'MM/DD/YYYY')
което ще включва данни за един цял ден.