У меня есть запрос, который возвращает общее количество движений:
SELECT
CASE PROD_TYPE
WHEN 1 THEN SUM(WEIGHT)
WHEN 2 THEN SUM(CASE MOVIMENT
1 THEN SUM(QUANTITY)
2 THEN SUM(QUANTITY * -1)
END)
END AS TOTAL
FROM TABLE
GROUP BY PROD_TYPE, MOVIMENT
Этот запрос дает мне ошибку ORA-00937, если удаление последней суммы не дает ошибку, но результат неправильный:
WHEN 2 THEN CASE MOVIMENT
1 THEN SUM(QUANTITY)
2 THEN SUM(QUANTITY * -1)
END
edit1:У меня есть следующие данныеPROD_TYPE |КОЛИЧЕСТВО |ВЕС |Moviment
-------- 2 ------------ 1100 ------------- 0 ------------- 1 ----------- 2 ------------ 1000 ------------- 0 ------------- 1----------- 2 ------------ 1200 ------------- 0 ------------- 1----------- 2 ------------ 1200 ------------- 0 ------------- 2---* 1 - вход, 2 - выход. Правильный результат - 2100, но если я удалю последнюю сумму, это даст два результата: 3300 и -1200Я пытался поместить КОЛИЧЕСТВО в группу по выражению, но продолжал получать ту же ошибку.