2013-07-11 39 views
0

我想在Oracle SQL Developer中運行以下查詢,但它不能識別正確的paren,另外我只需要返回第一行。如何使用在子查詢中選擇和排序

SELECT 'PX' 
FROM CME_NYMEX_FUTURES 
    where SYM='NG' AND CME_NYMEX_FUTURES.CONTRACT_MONTH = '6' and CME_NYMEX_FUTURES.CONTRACT_YEAR = '2013' 
     and OPR_DATE=(select opr_date FROM CME_NYMEX_FUTURES where SYM='NG' and TYP='6' and CME_NYMEX_FUTURES.CONTRACT_MONTH = '6' 
     and CME_NYMEX_FUTURES.CONTRACT_YEAR = '2013' order by OPR_DATE desc) and TYP='6' 
ORDER BY CONTRACT_YEAR asc, CONTRACT_MONTH asc 

當我嘗試以下方法,結果是不正確 - 我要取回一個數據點,而是我得到「PX」返回:

SELECT 'PX' 
FROM CME_NYMEX_FUTURES 
    where SYM='NG' AND CME_NYMEX_FUTURES.CONTRACT_MONTH = '6' and CME_NYMEX_FUTURES.CONTRACT_YEAR = '2013' 
     and OPR_DATE=(select opr_date FROM CME_NYMEX_FUTURES where SYM='NG' and TYP='6' and CME_NYMEX_FUTURES.CONTRACT_MONTH = '6' 
     and CME_NYMEX_FUTURES.CONTRACT_YEAR = '2013' and ROWNUM =1) and TYP='6' 
ORDER BY CONTRACT_YEAR asc, CONTRACT_MONTH asc, OPR_DATE desc 

感謝。

+1

您正在選擇一個常量('PX')。當查詢結果時,它將始終返回。您需要從結果集中選擇項目,如「CONTRACT_YEAR」,「CME_MYMEX_FUTURES.CONTRACT_MONTH」等。 –

回答

0

我仍然試圖破譯你的查詢,但是什麼列實際上持有你的數據點?你得到的是PX,因爲你把一個常數'PX'作爲選擇參考的一部分,而不是結果。

無論你在CME_NYMEX_FUTURES中爲你的數據點有什麼列,都應該在這裏列出來,而不是'PX'。讓我們知道,如果我在這裏錯過了你的觀點。