Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

A palavra-chave FROM não foi encontrada onde esperado


O código que você postou não tem um from cláusula, mas você disse que simplesmente não a incluiu. No entanto, tem um where cláusula - que está no lugar errado. Também está comparando uma data com uma string, o que não é uma boa ideia, pois depende da conversão implícita e das configurações de NLS da sessão. (Talvez você pense que pode comparar a string fixa com a data que você acabou de converter em uma string - mas esse não é o caso, pelo menos no mesmo nível de consulta, e seria ineficiente de qualquer maneira nesse caso.) E como você estão usando a função agregada, você precisa de uma cláusula group-by ...

Parece que você quer:
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

ou se você quiser a data de ontem sem precisar especificar você pode usar:
WHERE Booking_Date = TRUNC(sysdate - 1)
GROUP BY REPLACE(CM_NAME, '/', ' '),
   Booking_Date

Isso corresponderá apenas às linhas em que a Booking_Date é exatamente meia-noite. Se realmente incluir outras vezes, você pode fazer:
WHERE Booking_Date >= TRUNC(sysdate - 1)
AND Booking_Date < TRUNC(sysdate)
GROUP BY REPLACE(CM_NAME, '/', ' '),
   TO_CHAR(Booking_Date,'MM/DD/YYYY')

que incluirá um único dia inteiro de dados.