2014-05-21 56 views
0

这是工作的罚款..在选择显示错误选择 - 缺少右括号

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'); 

但这peice的是我造成的问题。

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 Error: ORA-00907: missing right parenthesis 00907. 00000 - "missing right parenthesis"

也试过

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; 
/

回答

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 
+0

好的..上面的代码正在运行....但是我想要第一行从表中... – Nisar

+0

在这种情况下,您的原始代码是好的,只需删除命令即可。 – Rene

+0

哦,谢谢....雷内 – Nisar

-1

这种尝试..

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'); 
+0

这是甲骨文我的朋友...看看@我的标签..顶1它不支持 – Nisar

0

尝试

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'); 

凡ROWNUM = 1已经被ROWNUM =“1”改为

+0

同样的错误............ – Nisar