sql >> Databáze >  >> RDS >> Oracle

Klíčové slovo FROM nebylo nalezeno, kde se očekávalo

Kód, který jste zveřejnili, nemá from klauzule, ale řekl jste, že jste ji prostě nezahrnuli. Má však where doložka - která je na špatném místě. Porovnává také datum s řetězcem, což není dobrý nápad, protože se spoléhá na implicitní převod a nastavení NLS relace. (Možná si myslíte, že může porovnat pevný řetězec s datem, které jste právě převedli na řetězec - ale není tomu tak, alespoň ve stejné úrovni dotazu, a v tomto případě by to bylo stejně neefektivní.) používáte agregační funkci, potřebujete klauzuli seskupit podle...

Zdá se, že chcete:

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

nebo pokud chcete včerejší datum, aniž byste jej museli uvádět, můžete použít:

WHERE Booking_Date = TRUNC(sysdate - 1)
GROUP BY REPLACE(CM_NAME, '/', ' '),
   Booking_Date

To bude odpovídat pouze řádkům s Booking_Date je přesně o půlnoci. Pokud ve skutečnosti zahrnuje i jiné časy, můžete:

WHERE Booking_Date >= TRUNC(sysdate - 1)
AND Booking_Date < TRUNC(sysdate)
GROUP BY REPLACE(CM_NAME, '/', ' '),
   TO_CHAR(Booking_Date,'MM/DD/YYYY')

která bude zahrnovat jeden celý den dat.




  1. Proč se mi zobrazuje ORA-01401:vložená hodnota je pro sloupec příliš velká - když nevkládám?

  2. JDBC Thin Oracle 11g

  3. Jak mohu namapovat datum Java na DATETIME v mysql (ve výchozím nastavení je to TIMESTAMP) s poznámkami Hibernate

  4. MySQL aktualizuje sloupec data s možnou hodnotou Null na hodnotu NULL