Не групповое выражение: устранение неполадок запроса Oracle - PullRequest
0 голосов
/ 28 июня 2019

запрос Oracle У меня есть значение столбца с жестко запрограммированным значением 'N / A' и другими значениями символов. Мне нужно написать запрос на выборку, чтобы получить минимум этого столбца, группирующего другой набор столбцов ... но проблема в том, что мне нужно заменить жестко закодированное значение 'N / A' другим символом 'Abc' вместе с функцией min

Вариант 1: nvl не будет работать, так как значение жестко задано Вариант 2: декодировать в операторе выбора вместе с предложением min в списке декодирования и группировать по предложению с другими столбцами, используемыми в списке выбора
Однако, получая ошибку

ORA-00979 : не групповое выражение.

Пример:

Select a, b, decode(z,'N/A','abc',min(z)) 
  From table 1, table 2
 Where table 1.p=table2.q
 Group by a,b
Having c.table1 >= table2.d

1 Ответ

1 голос
/ 28 июня 2019

Вы должны использовать DECODE внутри функции MIN, а не наоборот.Но я, вероятно, просто использовал бы здесь одно CASE выражение:

SELECT
    a,
    b,
    MIN(CASE WHEN z = 'N/A' THEN 'abc' ELSE z END) AS min_value
FROM table1 t1
INNER JOIN table2 t2
    ON t1.p = t2.q
GROUP BY
    a,
    b;

Вышеупомянутое выражение CASE просто принимает минимальное значение z для каждой группы, с единственной разницей между MIN(z) если это значение равно N/A, оно будет рассматриваться как abc.

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