Задать вопрос
@nikimiki7

Что не так с этим запросом SQL?

Привет
Подскажите что не так с запросом, ругается на ORA-00920: invalid relational operator
SELECT * FROM rpm_future_retail where (item, location, action_date) IN
(select item, location, MAX(ACTION_DATE) action_date from rpm_future_retail
group by item, location HAVING MAX(action_date) < SYSDATE order by item)

На всякий случай укажу тут еще вариант решения до которого сам в итоге дошел:

CREATE VIEW EX6
AS SELECT item, LOCATION, MAX(action_date) action_date FROM rpm_future_retail
GROUP BY item, location HAVING MAX(action_date) <= SYSDATE ORDER BY item;

SELECT ex6.item, ex6.location, ex6.action_date, rpm_future_retail.selling_retail actual_price FROM ex6
LEFT JOIN rpm_future_retail ON ex6.item = rpm_future_retail.item AND ex6.location = rpm_future_retail.location AND ex6.action_date = rpm_future_retail.action_date;

Всем спасибо!
  • Вопрос задан
  • 1103 просмотра
Подписаться 3 Средний 5 комментариев
Решения вопроса 1
insighter
@insighter
-First time? - Huh? (C#, React, JS)
Попробуйте так
SELECT t1.* 
  FROM rpm_future_retail t1
  INNER JOIN (
      select item, location, MAX(ACTION_DATE) action_date 
        from rpm_future_retail
        group by item, location 
        HAVING MAX(action_date) < SYSDATE order by item
    ) t2 ON (t1.item = t2.item and t1.location = t2.location and t1.action_date = t2.action_date)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
idShura
@idShura
upd. Ответ не правильный.
Вы неправильно используете оператор in
where (item, location, action_date) IN
Оператор должен использоваться для одного поля, а вы указываете несколько.

IN Condition
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы