0

私はSQLにかなり慣れていません。「date_requested」列が最も近い日に丸められ、結果を新しい列に配置するクエリを作成しようとしています。私はコードが最もきれいではないことを知っていますが、別のレポートで仕事を成し遂げます. ROUND 関数のコードを追加しましたが、「ORA-0933: SQL コマンドが正しく終了していません」というエラーが表示され続けます。

SELECT "RIT"."RIT_REQUEST_V".*   
FROM "RIT"."RIT_REQUEST_V"  
ROUND(to_date(''DATE_REQUESTED'') "DAY_REQUESTED"
WHERE (("FORM_ID" = 2011) 
OR ("FORM_ID" = 2014) 
OR ("FORM_ID" = 5007) 
OR ("FORM_ID" = 5036) 
OR ("FORM_ID" = 5039) 
OR ("FORM_ID" = 7007) 
OR ("FORM_ID" = 10000) 
OR ("FORM_ID" = 10001) 
OR ("FORM_ID" = 10005) 
OR ("FORM_ID" = 10007) 
OR ("FORM_ID" = 10011) 
OR ("FORM_ID" = 10020) 
OR ("FORM_ID" = 10024) 
OR ("FORM_ID" = 10025) 
OR ("FORM_ID" = 10029) 
OR ("FORM_ID" = 10032) 
OR ("FORM_ID" = 10033) 
OR ("FORM_ID" = 10034) 
OR ("FORM_ID" = 10035) 
OR ("FORM_ID" = 10036) 
OR ("FORM_ID" = 10037) 
OR ("FORM_ID" = 11011) 
OR ("FORM_ID" = 11013) 
OR ("FORM_ID" = 11999) 
OR ("FORM_ID" = 36001))
AND (("STATUS" LIKE 'OPEN%')
OR ("STATUS" LIKE 'Open%'))
4

1 に答える 1

1

2 つの小さなエラー:

  1. 計算列DAY_REQUESTEDを後ろに置きますFROM
  2. の最後にブラケットがありませんでしたROUND

IN最後に、多くの の代わりに使用できますOR。これにより、コードの保守が容易になります。

SELECT "RIT"."RIT_REQUEST_V".*,
        ROUND(to_date(E_DATREQUESTED)) "DAY_REQUESTED"
  FROM "RIT"."RIT_REQUEST_V"
 WHERE FORM_ID IN (2011,2014,5007,5036,5039,7007,10000,
                   10001,10005,10007,10011,10020,10024,
                   10025,10029,10032,10033,10034,10035,
                   10036,10037,11011,11013,11999,36001)   
   AND (("STATUS" LIKE 'OPEN%') OR
        ("STATUS" LIKE 'Open%'));

psでの小さなタイプミスを修正しましたFORM_ID IN

于 2013-04-11T18:53:11.837 に答える