Oracle, имеющий> одну строку - PullRequest
0 голосов
/ 17 октября 2011

У меня есть запрос Oracle, который имеет эффект

Имеющий количество (поле)> (длинная инструкция SQL, которая возвращает одну строку) Обе стороны запроса работают по одному, но вместе я получаю выражение «не по группе».

При замене длинного оператора SQL на число, которое оно работает, но я предположил, что два были эквивалентны, если возвращается только одна строка?

Редактировать После некоторой игры я понял: ... Таблица T ... Имея количество (поле)> (Длинный оператор SQL с таблицей A, где A.field = T.field) Это работает, когда я заменяю T.field любой из опций T.field, но когда я ссылаюсь на T.field, я получаю то же самое «не группа по выражению»

Ответы [ 2 ]

1 голос
/ 17 октября 2011

Когда Oracle анализирует ваш запрос, он не знает, будет ли запрос возвращать только одну строку или набор строк.Поэтому просто добавьте group by your_column в конец вашего запроса.

Например, этот запрос возвращает одну строку:

select count(*) from user_objects;

Но если бы я хотел включить sysdate вместе с этим, я быделать

select 
    sysdate the_date, 
    count(*) 
from
    user_objects 
group by 
    the_date;
0 голосов
/ 17 октября 2011
SELECT ... 
FROM Table T ...
GROUP BY T.afield
HAVING Count(T.anotherfield) 
       > (Long SQL statement with Table A Where A.somefield = T.afield)

должно работать нормально.


SELECT ... 
FROM Table T ...
GROUP BY T.anotherfield
HAVING Count(T.anotherfield) 
       > (Long SQL statement with Table A WHERE A.somefield = T.afield)

не должно работать.На поле (например, T.afield), которое не включено в список GROUP BY, нельзя ссылаться в предложениях SELECT, HAVING или ORDER BY.Можно ссылаться только на агрегатные функции этого поля - например, у вас может быть WHERE A.somefield = MIN(T.afield).

...