回答

收藏

使用ORDER BY和UNION进行ORACLE查询

技术问答 技术问答 316 人阅读 | 0 人回复 | 2023-09-12

我有以下查询,效果很好!( g0 s2 L2 W; }+ K
唯一的问题是我需要按DESC顺序排列的结果集,我在查询结束时附加到以下内容ORDER BY以下将产生子句Oracle错误:2 ^: k2 F/ l2 o0 b" N- b$ T+ k1 Y
ORA-00933:SQL00933没有正确结束命令。-“ SQL命令未正确结束” 原因:) k7 @" S( V, B' I2 {* K
操作:行错:46列:54
1 E1 v* r8 k' j1 c$ I; Y) A; t) Y5 O这是查询。同样,此查询也有效。只是当我添加以下行程时:
% i* L: F2 k- _4 A1 Y  @FINAL_SEARCH order by FINAL_SEARCH.DOC_HDR_ID desc一切都破了。+ j  k+ O+ A+ J# R; r% n
有什么想法吗?我相信我ALIAS和它有关,但我可能错了。
4 v! |3 v* `; V5 W, D* M询问 -  e. g$ `2 |( A
                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  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 FINAL_SEARCH order by FINAL_SEARCH.DOC_HDR_ID desc;更新-我删除了ALIAS,两次查询后都放置了 ORDER BY句子,句子在SQL
: T0 f5 V! r0 j  ]" t5 B0 YDeveloper有效。但是,当我使用它的时候。Java生成此查询Web在执行此查询时,有关无效符号的应用程序ORACLE错误。无效符号用于终止第一个ORDER0 I5 O) o: W' k+ s
BY语句的分号。否则,它将无法在SQL Developer中间工作,但显然当我通过执行时Web App当生成相同的句子时-它将失败。$ j/ i7 A/ Z; c* ^7 e: h( W4 O, Y; q
                                                               
7 U% k. }* P4 f9 q& V% I    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则