ORA-00937: Сумма внутри дела внутри суммы, которая находится внутри другого дела - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть запрос, который возвращает общее количество движений:

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Я пытался поместить КОЛИЧЕСТВО в группу по выражению, но продолжал получать ту же ошибку.

1 Ответ

0 голосов
/ 19 декабря 2018

Я думаю, что вы хотите:

SELECT (CASE PROD_TYPE
         WHEN 1 THEN SUM(WEIGHT)
         WHEN 2 THEN SUM(CASE MOVIMENT
                           WHEN 1 THEN QUANTITY
                           WHEN 2 THEN - QUANTITY
                         END)
        END) AS TOTAL
FROM TABLE
GROUP BY PROD_TYPE, MOVIMENT;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...