Использование SUM в подзапросе - PullRequest
1 голос
/ 20 января 2020

Я получаю сообщение об ошибке при выполнении этого запроса. Ошибка: ORA-00937 не является групповой функцией для одной группы.

Мой код:

SELECT 
    SUM(UL.ACTION_CODE*UL.MASS_NET) AS WINDER_NET , 
    SUM(U.MASS_SCALED) AS SCALED_NET,
    (
        SELECT SUM(JRL.MASS_CALCULATED) 
        FROM JUMBOREELLOG JRL 
        WHERE 
            JRL.DATE_TRANSACTION >= to_date('08/01/2020 06:00' , 'dd/mm/yyyy HH24:MI')
            AND JRL.DATE_TRANSACTION < to_date('09/01/2020 06:01' , 'dd/mm/yyyy HH24:MI')
            AND JRL.JUMBO_TRANSACTION_TYPE IN('TU','HY') 
            AND JRL.STATION_CODE = 'PM1P'
    ) AS JUMBO_TOTAL
FROM UNIT U
INNER JOIN  UNITLOG UL ON U.UNIT_ID = UL.UNIT_ID
WHERE 
    UL.DATE_TRANSACTION >= to_date('08/01/2020 06:00' , 'dd/mm/yyyy HH24:MI')
    AND UL.DATE_TRANSACTION < to_date('09/01/2020 06:01' , 'dd/mm/yyyy HH24:MI')

Ожидаемый результат - три столбца Winder _Net, Scaled _Net и Jumbo_Total с некоторым целым числом ценности. Если кто-то, пожалуйста, сообщите мне, как создать таблицу здесь.

1 Ответ

0 голосов
/ 20 января 2020

Интересно. Непонятно, почему вы не включаете Group by; однако ваш запрос будет правильным в других СУБД, таких как SQL Сервер или MySQL. Я предлагаю переписать его, используя CROSS JOIN:

SELECT *
FROM (
    SELECT 
        SUM(UL.ACTION_CODE*UL.MASS_NET) AS WINDER_NET , 
        SUM(U.MASS_SCALED) AS SCALED_NET,
    FROM UNIT U
    INNER JOIN  UNITLOG UL ON U.UNIT_ID = UL.UNIT_ID
    WHERE 
        UL.DATE_TRANSACTION >= to_date('08/01/2020 06:00' , 'dd/mm/yyyy HH24:MI')
        AND UL.DATE_TRANSACTION < to_date('09/01/2020 06:01' , 'dd/mm/yyyy HH24:MI')
) 
CROSS JOIN
(
    SELECT SUM(JRL.MASS_CALCULATED) JUMBO_TOTAL
    FROM JUMBOREELLOG JRL 
    WHERE 
        JRL.DATE_TRANSACTION >= to_date('08/01/2020 06:00' , 'dd/mm/yyyy HH24:MI')
        AND JRL.DATE_TRANSACTION < to_date('09/01/2020 06:01' , 'dd/mm/yyyy HH24:MI')
        AND JRL.JUMBO_TRANSACTION_TYPE IN('TU','HY') 
        AND JRL.STATION_CODE = 'PM1P'
)

Здесь вы можете найти пример, имитирующий вашу проблему, а здесь вы можете найти решение с помощью CROSS JOIN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...