ORA-00979: Не выражение GROUP BY - Oracle 12c

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

SELECT   1
FROM     DUAL
GROUP BY CUBE (1,1,1,1,1,1)

SQL возвращает 64 строки с 1 в качестве значения на моем сервере PROD (Oracle 10) и дает мне следующую ошибку в DEV (Oracle 12c). Других отличий между таблицами нет.

ORA-00979: Not a GROUP BY Expression

Спасибо Вивекан с


person Vivekan S    schedule 03.02.2015    source источник
comment
Кажется, что oracle 12c интерпретирует все единицы в выражении CUBE как отличные от 1 в SELECT. Это также работает с 11g. Просто найдите другой способ сгенерировать 64 строки по 1.   -  person Mihai    schedule 03.02.2015
comment
Спасибо, Михай - я попытался сгенерировать 64 строки, используя нижеупомянутый SQL, и даже это, похоже, не дает мне каких-либо строк, выберите 1 из Двойного запуска с rownum = 1 connect by rownum ‹65   -  person Vivekan S    schedule 03.02.2015
comment
Будет ли WITH T AS ( SELECT 1 FROM DUAL UNION ALL SELECT 1 FROM DUAL) SELECT * FROM T CROSS JOIN T CROSS JOIN T CROSS JOIN T CROSS JOIN T CROSS JOIN T ; работать на вас? (Работает на 11g…)   -  person Abecee    schedule 04.02.2015
comment
Другой вариант SELECT 1 col FROM dual CONNECT BY LEVEL <= 64   -  person Mihai    schedule 04.02.2015
comment
Возможно, вам стоит открыть SR с Oracle. Это можно рассматривать как ошибку.   -  person ibre5041    schedule 04.02.2015


Ответы (1)


select rpad('1',63, '1') from dual;

генерирует строку из единиц. rpad (начальный символ, количество повторов, заполнение символа)

person jim mcnamara    schedule 03.02.2015