De code die je hebt gepost heeft geen from
clausule, maar je zei dat je het gewoon niet had opgenomen. Het heeft echter wel een where
clausule - die op de verkeerde plaats staat. Het vergelijkt ook een datum met een tekenreeks, wat geen goed idee is omdat het afhankelijk is van impliciete conversie- en sessie-NLS-instellingen. (Misschien denkt u dat het de vaste tekenreeks kan vergelijken met de datum die u zojuist naar een tekenreeks hebt geconverteerd - maar dat is niet het geval, althans niet op hetzelfde zoekniveau, en zou in dit geval sowieso inefficiënt zijn.) En zoals u gebruik maakt van de aggregatiefunctie, je hebt een group-by-clausule nodig...
Het lijkt alsof je wilt:
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
of als u de datum van gisteren wilt zonder deze op te geven, kunt u het volgende gebruiken:
WHERE Booking_Date = TRUNC(sysdate - 1)
GROUP BY REPLACE(CM_NAME, '/', ' '),
Booking_Date
Dat komt alleen overeen met rijen waar de Booking_Date
is precies om middernacht. Als het ook andere tijden omvat, kunt u het volgende doen:
WHERE Booking_Date >= TRUNC(sysdate - 1)
AND Booking_Date < TRUNC(sysdate)
GROUP BY REPLACE(CM_NAME, '/', ' '),
TO_CHAR(Booking_Date,'MM/DD/YYYY')
die een enkele volledige dag aan gegevens bevat.