2014-05-21 58 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