我怎么“按分钟排序(子查询)”?

时间:2009-10-02 17:02:28

标签: sql oracle plsql

我正在尝试返回日期列表。每行有多个日期连接成一个字符串。我想按行每个行的最小日期排序。

这是我的问题:

  SELECT br.bm_tracking_number,
         (SELECT TOLIST(APPT.fact_date) 
            FROM bm_fact APPT 
           WHERE APPT.bm_review_sk = br.bm_review_sk
             AND APPT.fact_type_code=183050) "Appointments"
    FROM BM_REVIEW br
   WHERE row_delete_date_time IS NULL
ORDER BY MIN(SELECT APPT.fact_date 
               FROM bm_fact APPT
              WHERE APPT.bm_review_sk = br.bm_review_sk
               AND APPT.fact_type_code = 183050);

我逐行获得Oracle错误(00936缺失表达式)。还有另一种方法可以完成我想要做的事情吗?

2 个答案:

答案 0 :(得分:3)

此:

  SELECT br.bm_tracking_number,
         TOLIST(bf.fact_date)
    FROM BM_REVIEW br
    JOIN BM_FACT bf ON bf.bm_review_sk = br.bm_review_sk
                   AND bf.fact_type_code = 183050
   WHERE br.row_delete_date_time IS NULL
GROUP BY br.bm_tracking_number
ORDER BY MIN(bf.fact_date)

...将为您提供一个列表,按fact_date按升序排序。

答案 1 :(得分:0)

只看了一眼,但有一点是你没有在子查询中将bm_fact别名为APPT。


修改

好的,你解决了这个问题。

如何将MIN()放在子查询中?

ORDER BY (SELECT MIN(APPT.fact_date) ...)