我正在尝试返回日期列表。每行有多个日期连接成一个字符串。我想按行每个行的最小日期排序。
这是我的问题:
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缺失表达式)。还有另一种方法可以完成我想要做的事情吗?
答案 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) ...)