sql >> Database >  >> RDS >> Oracle

FROM trefwoord niet gevonden waar verwacht

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.




  1. PHP-tijd sinds functiefout

  2. Welke versies van SQL Server ondersteunt LINQ to SQL?

  3. Een relationele database opvragen via Google DataFlow Transformer

  4. Hoe te converteren van de ene datumnotatie naar de andere in SQL Server met CONVERT()