首页 > 解决方案 > 无法在 Oracle SQL 中执行 UNION

问题描述

我想做一个查询的联合,但出现错误。

SELECT 
  NB.NETBANKID,
  NB.BANKNAME,
  NBMAP.SORTORDER,
  NB.BANKCODE
FROM VTSMNETBNK NB
INNER JOIN CGCMN.VTMESTRNETBNKMAP NBMAP
ON NBMAP.NETBANKID =NB.NETBANKID
WHERE NBMAP.STOREID=133 AND 
NBMAP.EFFDATE <= SYSDATE
AND NBMAP.STATUS   ='A'
AND NB.STATUS      = 'A' 
ORDER BY NBMAP.SORTORDER
FETCH NEXT 6 ROWS ONLY

ORA-00933:SQL 命令未正确结束 00933. 00000 - “SQL 命令未正确结束” *原因:
*操作:错误在行:15 列:1

标签: sqloracleoracle11gsql-limit

解决方案


FETCH子句仅在 Oracle 12c 中可用。在 Oracle 11g 中,您可以ROW_NUMBER改为使用:

select netbankid, bankname, sortorder, bankcode
from
(
  select 
    nb.netbankid,
    nb.bankname,
    nbmap.sortorder,
    nb.bankcode,
    row_number() over (order by nbmap.sortorder) as rn
  from vtsmnetbnk nb
  inner join cgcmn.vtmestrnetbnkmap nbmap on nbmap.netbankid = nb.netbankid
  where nbmap.storeid = 133 
  and nbmap.effdate <= sysdate
  and nbmap.status = 'A'
  and nb.status = 'A' 
)
where rn <= 6
order by rn;

推荐阅读