Den kode, du har sendt, har ikke en from
klausul, men du sagde, at du bare ikke havde inkluderet det. Den har dog en where
klausul - som er det forkerte sted. Det er også at sammenligne en dato med en streng, hvilket ikke er en god idé, da den er afhængig af implicit konvertering og session NLS-indstillinger. (Måske tror du, at den kan sammenligne den faste streng med den dato, du lige har konverteret til en streng - men det er ikke tilfældet, i det mindste på samme niveau af forespørgsel, og det ville alligevel være ineffektivt i dette tilfælde.) Og som du bruger aggregeret funktion, skal du bruge en gruppe-by-klausul...
Det ser ud til, at du ønsker:
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
eller hvis du ønsker gårsdagens dato uden at skulle angive det, kan du bruge:
WHERE Booking_Date = TRUNC(sysdate - 1)
GROUP BY REPLACE(CM_NAME, '/', ' '),
Booking_Date
Det vil kun matche rækker med Booking_Date
er præcis ved midnat. Hvis det faktisk inkluderer andre tidspunkter, kan du gøre:
WHERE Booking_Date >= TRUNC(sysdate - 1)
AND Booking_Date < TRUNC(sysdate)
GROUP BY REPLACE(CM_NAME, '/', ' '),
TO_CHAR(Booking_Date,'MM/DD/YYYY')
som vil inkludere en enkelt hel dags data.