Ежемесячная статистика. ORA-01722: неверный номер - PullRequest
0 голосов
/ 24 июня 2019

Я использую два варианта сделать ежемесячную статистику. Первый выбор выбирает соответствующие данные, а затем тщательно подсчитывает ежемесячную статистику.

Первый выбор:

SELECT
        TO_CHAR (ZDZDATETIME, 'RRRR-MM-DD') AS DA,
        ID,
        MAX (DAYRF) AS DAYRF
    FROM
        JC_T_QXJYJCSJ
    WHERE
        ID = 'G2001'
    GROUP BY
        TO_CHAR (ZDZDATETIME, 'RRRR-MM-DD'),
        ID
    ORDER BY
        ID,
        TO_CHAR (ZDZDATETIME, 'RRRR-MM-DD')

результат: результат окончательный код:

SELECT
TO_CHAR (DA, 'RRRR-MM') AS DA1,
SUM (DAYRF)FROM(
    SELECT
        TO_CHAR (ZDZDATETIME, 'RRRR-MM-DD') AS DA,
        ID,
        MAX (DAYRF) AS DAYRF
    FROM
        JC_T_QXJYJCSJ
    WHERE
        ID = 'G2001'
    GROUP BY
        TO_CHAR (ZDZDATETIME, 'RRRR-MM-DD'),
        ID
    ORDER BY
        ID,
        TO_CHAR (ZDZDATETIME, 'RRRR-MM-DD')
) GROUP BY
TO_CHAR (DA, 'RRRR-MM');

Всегда запрашивать у меня неправильные номера

Я думаю, что в предложении ID = ‘G2001’ возникла проблема, поэтому я попытался изменить его на другой ID = «XXX», и оно будет успешно выполнено. Я не знаю, произошла ли ошибка, отличная от кода.

1 Ответ

0 голосов
/ 24 июня 2019

Ваш вопрос не выявил много информации о вашей проблеме.

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

WITH DATAA(ID, DAYRF, DATE1) AS
(
SELECT 1, 10, DATE '2019-06-22' FROM DUAL UNION ALL
SELECT 1, 9 , DATE '2019-06-22' FROM DUAL UNION ALL
SELECT 1, 5, DATE '2019-06-22' FROM DUAL UNION ALL
SELECT 2, 20, DATE '2019-06-22' FROM DUAL UNION ALL
SELECT 2, 15, DATE '2019-06-22' FROM DUAL UNION ALL
SELECT 2, 12, DATE '2019-06-22' FROM DUAL UNION ALL
SELECT 3, 5, DATE '2019-06-22' FROM DUAL UNION ALL
SELECT 3, 30, DATE '2019-06-22' FROM DUAL UNION ALL
SELECT 1, 20, DATE '2019-06-23' FROM DUAL UNION ALL
SELECT 1, 29 , DATE '2019-06-23' FROM DUAL UNION ALL
SELECT 1, 15, DATE '2019-06-23' FROM DUAL UNION ALL
SELECT 2, 40, DATE '2019-06-23' FROM DUAL UNION ALL
SELECT 2, 45, DATE '2019-06-23' FROM DUAL UNION ALL
SELECT 2, 32, DATE '2019-06-23' FROM DUAL UNION ALL
SELECT 3, 19, DATE '2019-06-23' FROM DUAL UNION ALL
SELECT 3, 1, DATE '2019-06-23' FROM DUAL
)
SELECT
    DATE1,
    SUM(MAX_DAYRF)
FROM
    (
        SELECT
            DATE1,
            ID,
            MAX(DAYRF) AS MAX_DAYRF
        FROM
            DATAA
        GROUP BY
            DATE1,
            ID
    )
GROUP BY
    DATE1;

Ouptut

enter image description here

Демонстрация Fiddle

Приветствия !!

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