Sql 在选择中选择显示错误-缺少右括号

Sql 在选择中选择显示错误-缺少右括号,sql,oracle,Sql,Oracle,这很好用 SELECT CM.CMN_CODE,CM.CMN_NAME --(SELECT CMPI_PRCINX FROM CMD_MTRL_PRICE_INF WHERE ROWNUM = 1 ORDER BY CMPI_PRCINX DESC) as k FROM CMN_MST CM LEFT JOIN CMD_MTRL_INF CMI ON CM.CMN_CODE=CMI.CMN_CDTY_MTRL LEFT JOIN CMD_MTRL_PRICE_INF C

这很好用

  SELECT CM.CMN_CODE,CM.CMN_NAME
      --(SELECT CMPI_PRCINX FROM CMD_MTRL_PRICE_INF WHERE ROWNUM = 1 ORDER BY CMPI_PRCINX DESC) as k
  FROM CMN_MST CM LEFT JOIN CMD_MTRL_INF CMI ON CM.CMN_CODE=CMI.CMN_CDTY_MTRL 
  LEFT JOIN CMD_MTRL_PRICE_INF CMPI ON CMI.CMI_CODE = CMPI.CMI_CODE
  WHERE CM.CTYP_CODE IN (SELECT CTYP_CODE FROM CTYP_MST WHERE CTYP_NAME = 'Common Material');
但这件事给我带来了麻烦

SELECT CM.CMN_CODE,CM.CMN_NAME,
    (SELECT CMPI_PRCINX FROM CMD_MTRL_PRICE_INF WHERE ROWNUM = 1 ORDER BY CMPI_PRCINX DESC) AS K
FROM CMN_MST CM LEFT JOIN CMD_MTRL_INF CMI ON CM.CMN_CODE=CMI.CMN_CDTY_MTRL 
LEFT JOIN CMD_MTRL_PRICE_INF CMPI ON CMI.CMI_CODE = CMPI.CMI_CODE
WHERE CM.CTYP_CODE IN (SELECT CTYP_CODE FROM CTYP_MST WHERE CTYP_NAME = 'Common Material');
SQL错误:ORA-00907:缺少右括号 90700000-“缺少右括号”

也试过

  DECLARE 
  PCMPI_PRCINX NUMERIC;
  BEGIN
  SELECT CMPI_PRCINX INTO PCMPI_PRCINX FROM CMD_MTRL_PRICE_INF WHERE ROWNUM = 1 ORDER BY CMPI_PRCINX DESC;
  --SELECT CMPI_PRCINX FROM CMD_MTRL_PRICE_INF WHERE ROWNUM = 1 ORDER BY CMPI_PRCINX DESC;
  SELECT CM.CMN_CODE,CM.CMN_NAME
      --(SELECT CMPI_PRCINX FROM CMD_MTRL_PRICE_INF WHERE ROWNUM = 1 ORDER BY CMPI_PRCINX DESC) AS K,
      PCMPI_PRCINX AS PREVPRICE,    
      CMPI.CMPI_UPDATE_STS
  FROM CMN_MST CM LEFT JOIN CMD_MTRL_INF CMI ON CM.CMN_CODE=CMI.CMN_CDTY_MTRL 
  LEFT JOIN CMD_MTRL_PRICE_INF CMPI ON CMI.CMI_CODE = CMPI.CMI_CODE
  WHERE CM.CTYP_CODE IN (SELECT CTYP_CODE FROM CTYP_MST WHERE CTYP_NAME = 'Common Material');
  END;
  /
试试这个

SELECT CM.CMN_CODE,CM.CMN_NAME,
    (SELECT TOP 1 CMPI_PRCINX FROM CMD_MTRL_PRICE_INF WHERE ROWNUM = 1 ORDER BY CMPI_PRCINX DESC) AS K
FROM CMN_MST CM LEFT JOIN CMD_MTRL_INF CMI ON CM.CMN_CODE=CMI.CMN_CDTY_MTRL 
LEFT JOIN CMD_MTRL_PRICE_INF CMPI ON CMI.CMI_CODE = CMPI.CMI_CODE
WHERE CM.CTYP_CODE IN (SELECT CTYP_CODE FROM CTYP_MST WHERE CTYP_NAME = 'Common Material');
试一试


其中ROWNUM=1已被ROWNUM='1'更改

我认为您需要重新考虑查询的这一部分:

  ,(select cmpi_prcinx
      from cmd_mtrl_price_inf
     where rownum = 1
     order by cmpi_prcinx desc) as k
这将从cmpi_prcinx返回第一行,然后应用订单。因此,它不会像您预期的那样返回cmpi_prcinx的最大值

您可以尝试以下方法:

  ,(select max(cmpi_prcinx) from cmd_mtrl_price) as k

这是我的朋友。。。看我的标签。。top 1在ITI中不受支持在这种情况下,您的原版还可以,只需删除订单即可。
  ,(select max(cmpi_prcinx) from cmd_mtrl_price) as k