как мне "Заказать по мин (подзапрос)"? - PullRequest
2 голосов
/ 02 октября 2009

Я пытаюсь вернуть список дат. Каждая строка имеет несколько дат, объединенных в одну строку. Я хочу упорядочить строки по минимальной дате в каждой строке.

Вот мой запрос:

  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 ]

3 голосов
/ 02 октября 2009

Это:

  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 в порядке возрастания.

0 голосов
/ 02 октября 2009

Только взглянув на него, но одно: вы не указали bm_fact для APPT в подзапросе.


EDIT:

Хорошо, вы исправили это.

Как насчет размещения MIN () внутри подзапроса?

ORDER BY (SELECT MIN(APPT.fact_date) ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...