如何在子查询中使用“选择”和“排序依据”

时间:2013-07-11 21:07:16

标签: sql oracle subquery sql-order-by

我正在尝试在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 个答案:

答案 0 :(得分:0)

我仍在尝试破译您的查询,但是哪一列实际上是在保存您的数据点?你正在获得PX,因为你将'PX'的常量作为选择参考的一部分,而不是转动结果。

您的数据点的CME_NYMEX_FUTURES中的任何列都应列在此处,而不是“PX”。如果我在这里错过了你的观点,请告诉我们。