我有以下查詢,它工作的很棒!使用ORDER BY和UNION的ORACLE查詢
的唯一的事情是我需要的結果DESC順序設置和下面的ORDER BY子句,我已經添加到我的查詢結束時產生以下Oracle錯誤:
ORA-00933:SQL命令未正確地結束 00933. 00000 - 「SQL命令不能正確地結束」 *原因:
*動作: 行錯誤:46列:54
這裏查詢。再次,這個查詢工作。這只是當我添加以下行:
FINAL_SEARCH order by FINAL_SEARCH.DOC_HDR_ID desc
一切都打破。
任何想法? 我相信我的ALIAS與它有關,但我可能是錯的。
查詢 -
Select * from (select DISTINCT(DOC_HDR.DOC_HDR_ID),
DOC_HDR.INITR_PRNCPL_ID,
DOC_HDR.DOC_HDR_STAT_CD,
DOC_HDR.CRTE_DT,
DOC_HDR.TTL,
DOC_HDR.APP_DOC_STAT,
DOC1.DOC_TYP_NM,
DOC1.LBL, DOC1.DOC_HDLR_URL,
DOC1.ACTV_IND
from KREW_DOC_TYP_T DOC1, KREW_DOC_HDR_T DOC_HDR
where DOC_HDR.INITR_PRNCPL_ID IN ('10000000001') and
(DOC1.DOC_TYP_NM = 'PO' or
DOC1.DOC_TYP_NM = 'POA' or
DOC1.DOC_TYP_NM = 'POC' or
DOC1.DOC_TYP_NM= 'POPH' or
DOC1.DOC_TYP_NM ='PORH' or
DOC1.DOC_TYP_NM = 'POR' or
DOC1.DOC_TYP_NM = 'PORT' or
DOC1.DOC_TYP_NM = 'POSP' or
DOC1.DOC_TYP_NM = 'POV') and
DOC_HDR.DOC_HDR_STAT_CD!= 'I' and
DOC_HDR.DOC_TYP_ID = DOC1.DOC_TYP_ID)
UNION
Select DISTINCT DOC_HDR.DOC_HDR_ID,
DOC_HDR.INITR_PRNCPL_ID,
DOC_HDR.DOC_HDR_STAT_CD,
DOC_HDR.CRTE_DT,
DOC_HDR.TTL,
DOC_HDR.APP_DOC_STAT,
DOC1.DOC_TYP_NM,
DOC1.LBL,
DOC1.DOC_HDLR_URL,
DOC1.ACTV_IND
FROM KREW_DOC_TYP_T DOC1,
KREW_DOC_HDR_T DOC_HDR
WHERE DOC1.DOC_TYP_NM = 'PO' AND CAST(DOC_HDR.DOC_HDR_ID AS VARCHAR(14)) = ANY (
Select PPT.FDOC_NBR
FROM PUR_PO_T PPT, PL_PURCHASE_LOG_PO_T PPL
WHERE PPT.AP_PUR_DOC_LNK_ID = ANY (
Select PRT.AP_PUR_DOC_LNK_ID
FROM PUR_REQS_T PRT,
KREW_DOC_HDR_T DOC_HDR
WHERE CAST(DOC_HDR.DOC_HDR_ID AS VARCHAR(14)) = PRT.FDOC_NBR AND
DOC_HDR.INITR_PRNCPL_ID IN ('10000000001'))) FINAL_SEARCH order by FINAL_SEARCH.DOC_HDR_ID desc;
更新 - 我刪除別名並放置在「ORDER BY」聲明這兩個查詢後,它在SQL開發工作;但是,當我通過使用Java生成此查詢的Web應用程序執行此查詢時,我收到有關無效符號的ORACLE錯誤。 無效符號是用於終止第一個ORDER BY語句的分號。在SQL Developer中它不會起作用,但顯然當我執行通過Web應用程序生成的相同語句時 - 它失敗了。
它與Web應用程序的工作沒有分號? – 2012-08-09 18:18:37
如果我刪除分號,則會得到以下錯誤:收到的錯誤嘗試執行搜索:DataAccessException:ConnectionCallback;錯誤的SQL語法[];嵌套異常是java.sql.SQLException:ORA-00933:SQL命令未正確結束 – 2012-08-09 18:21:50
您沒有用適當的()包裝代碼。答案在下面:) – EplusL 2012-08-09 18:28:05