Мне нравится использовать две совокупные функции (COUNT
, SUM
) в одном операторе SQL с помощью команды CASE WHEN
. Мой код выглядит так:Два совокупных функционала с различными критериями
CASE
WHEN ( ( ( ( (CSSC_MASTER_VIEW.ORDER_TYPE = 'OR')
OR (OCSSC_MASTER_VIEW.ORDER_TYPE = 'KB'))
OR (CSSC_MASTER_VIEW.ORDER_TYPE = 'KE'))
OR (CSSC_MASTER_VIEW.ORDER_TYPE = 'OR-TAT'))
OR (CSSC_MASTER_VIEW.ORDER_TYPE = 'QT-TAT'))
OR (CSSC_MASTER_VIEW.ORDER_TYPE = 'QT')
THEN
COUNT((CSSC_MASTER_VIEW.ORDER_LINE_NUMBER))
ELSE
SUM((CSSC_MASTER_VIEW.ORDER_LINE_NUMBER))
END
AS Lines_processed
Этот код дает ошибку "Oracle Database Error: ORA-00900: недопустимый заявление SQL"
Может ли один помочь мне в этом?
Нам нужно полное заявление, чтобы помочь вам. Также почему вы используете столько круглых скобок? Вы намеренно пытаетесь сделать ваш код более трудным для чтения/отладки? –
Думаю, вам придется разбить это на два отдельных агрегата. На данный момент вы запрашиваете невозможное: два значения в одном выходе. Какая база данных будет возвращена - SUM или COUNT? Он не может сказать; ни я тоже. –
Как указывает Джонатан. Кажется, вы агрегируете, но могут быть несколько строк, которые соответствуют одному случаю, и некоторые, которые соответствуют другому случаю. Что делать? Счет или сумма? –