在子查询中按日期排序?

时间:2016-04-28 07:52:59

标签: sql oracle subquery

我使用的是Oracle 11g,遇到了根据子查询订购数据的情况。

假设有两个表STATUS_TABLETXN_TABLE。我想根据TXN_TABLE的{​​{1}}字段缩短STATUS_TABLE

以下是示例查询

DATE_INS

此查询根据DATE_INS以降序返回ID列表。所以上面的查询已经为TXN_TABLE扩展了一点点,如下所示

SELECT ID
FROM STATUS_TABLE
WHERE STATUS = 'Pass'
ORDER BY DATE_INS DESC

给了我:

  

ORA-00907:缺少右括号

我浏览了文档,他们告诉我们无法在子查询中创建订单类。那么这个场景有什么解决方法可以使它工作吗?

如果您需要更多详细信息,请在下面进行评论。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

也许你可以试试这个

SELECT tmp.* FROM
    (SELECT tx.*, st.DATE_INS AS DATE_INS_ST
    FROM TXN_TABLE tx, STATUS_TABLE st
    WHERE tx.ID = st.ID AND st.STATUS = 'Pass') tmp
ORDER BY DATE_INS_ST DESC

答案 1 :(得分:1)

对子查询进行排序将不会对最终结果进行排序; 您可以将查询重写为:

SELECT *
FROM TXN_TABLE
    INNER JOIN STATUS_TABLE
USING(ID)
WHERE STATUS='Pass'
ORDER BY DATE_INS DESC

假设,正如jarlh正确理解的那样,您的ID列不能具有重复值

相关问题