sql >> データベース >  >> RDS >> Oracle

FROMキーワードが予期された場所に見つかりません

    投稿したコードにfromがありません 条項が含まれていなかったとおっしゃいました。ただし、whereはあります 条項-これは間違った場所にあります。また、日付と文字列を比較していますが、暗黙的な変換とセッションNLS設定に依存しているため、お勧めできません。 (おそらく、固定文字列を文字列に変換したばかりの日付と比較できると思うかもしれませんが、少なくとも同じレベルのクエリではそうではなく、この場合はとにかく非効率的です。)そしてあなたとして集計関数を使用している場合は、group-by句が必要です...

    あなたが望むように思えます:

    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
    

    または、指定せずに昨日の日付が必要な場合は、次を使用できます。

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

    これは、Booking_Dateが存在する行にのみ一致します ちょうど真夜中です。実際に他の時間が含まれている場合は、次のことができます。

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

    これには、1日のデータが含まれます。




    1. 多くの隣接する行でWHEREを使用してPostgresクエリを痛々しいほど遅くする

    2. foreachループで日付をグループ化する

    3. 何回も何回も!データモデルでの定期的なイベントの管理

    4. スクロール可能なJTableの作成方法