Проблема с «упорядочить по», используя вычитание между датами (одна из них происходит из запроса) - PullRequest
0 голосов
/ 21 апреля 2019

Я не знаю, возможно ли это вообще, но я хочу упорядочить результаты моего запроса по времени, прошедшему между двумя датами, одна из которых поступила из запроса.

Что мне нужно, так это заказать альбомы с диска DISCS, чтобы те, у которых REL_DATE была ближе к другой дате (заданной во втором запросе), появились первыми. Запрос «SELECT ORDER_S ...» возвращает одну дату, извлеченную из другой таблицы, и отлично работает сама по себе.

SELECT ALBUM
FROM DISCS
ORDER BY
  ABS((
  SELECT ORDER_S
  FROM SALE_LINE
  WHERE E_MAIL = (
    SELECT E_MAIL FROM CLIENTS
    WHERE DNI = 46470063
  ) AND ROWNUM = 1
  ORDER BY ORDER_S DESC)
  - REL_DATE) ASC;

Где ALBUM - атрибут типа строки, а ORDER_S и REL_DATE - атрибуты типа DATE.

Однако все, что я получаю, - это ошибка в строке ORDER BY ORDER_S DESC), «отсутствует правая скобка», и я не могу понять, почему.

1 Ответ

0 голосов
/ 21 апреля 2019

Правильный синтаксис был бы:

SELECT d.ALBUM
FROM DISCS d
ORDER BY
  ABS((SELECT MIN(sl.ORDER_S)
       FROM SALE_LINE sl
       WHERE sl.E_MAIL = (SELECT c.E_MAIL
                          FROM CLIENTS c
                          WHERE c.DNI = 46470063
                         ) 
      ) - d.REL_DATE
     ) ASC;

Я не могу сказать, делает ли это что-нибудь полезное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...