@132bpm

Как убрать поле из Group by?

Привет,

есть вопрос по запросу, запрос следующий:
select 
           decode (ep.ext_brand, ' ', 'PR',
                                      'YR') brand,
           case
           when ep.type_op < 30 then 'VPM' else 'VAD' end flow,
           'RU',
           lp.id_produit, 
           sum(lp.qte_a_preparer)
from 
           entete_op ep, 
           ligne_op lp,
           entete_op_client epc
where 
           ep.id_op = lp.id_op and
           ep.id_op = epc.id_op and
           ep.etat < 2000
group by ep.ext_brand, lp.id_produit, ep.type_op


Вопрос следующий:
Поле ep.type_op имеет несколько значений, а мне нужно только два. Использую оператор CASE, но при этом ORACLE заставляет группировать по ep.type_op, тогда в операторе CASE нет смысла, т.к. результат разделяет 2 строки с одинаковыми значениям flow.

пример результата с использованием ep.type_op:
YR VPM RU AA535 1
YR VPM RU AA535 1

пример результата без использования ep.type_op :
YR RU AA535 2

Вот мне нужен результат как во втором запросе, только с использованием поля ep.type_op...
  • Вопрос задан
  • 506 просмотров
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
в group by вполне может жить тот же самый case что и в селекте, точнее даже наверное не может, а должен
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
Поле ep.type_op имеет несколько значений, а мне нужно только два.

HAVING
Specifies a search condition for a group or an aggregate. HAVING can be used only with the SELECT statement. HAVING is typically used in a GROUP BY clause. When GROUP BY is not used, HAVING behaves like a WHERE clause.

мне нужно получить параметр если меньше 30 то 'значение 1' в противном случае 'значение 2' - > то что я описал с помощью CASE в селекте.
Добавьте в таблицу вычисляемое поле или сделайте представление.
Ответ написан
Ваш ответ на вопрос

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

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