Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 очень простой запрос с max() и подзапросом с max()  [new]
receiver
Member

Откуда:
Сообщений: 262
Был в отчете подбный фрагмент (очень упрощенно)

select max(start) || ' - ' || max(end) from table_1

Загляденье! )

Теперь пользователь хочет end получать из другой таблицы, примерно так

select max(start) || ' - ' || (select max(end) from table_2) from table_1

Получаю ORA-00937: not a single-group group function - разумно.
Вынести подзапрос в group by не можно - ORA-22818: subquery expressions not allowed here - еще раз разумно.

Отчет был реализован как один изрядный запрос.
Можно ли обойти ошибки, чтобы не реализовывать отчет как процедуру?
13 окт 14, 09:19    [16694994]     Ответить | Цитировать Сообщить модератору
 Re: очень простой запрос с max() и подзапросом с max()  [new]
Изя Кацман
Member

Откуда: Великий Эксперимент
Сообщений: 2019
receiver
Был в отчете подбный фрагмент (очень упрощенно)

select max(start) || ' - ' || max(end) from table_1


Загляденье! )

Теперь пользователь хочет end получать из другой таблицы, примерно так

select max(start)  || ' - ' || (select max(end) from table_2) from table_1


Получаю ORA-00937: not a single-group group function - разумно.
Вынести подзапрос в group by не можно - ORA-22818: subquery expressions not allowed here - еще раз разумно.

Отчет был реализован как один изрядный запрос.
Можно ли обойти ошибки, чтобы не реализовывать отчет как процедуру?
Камрад!

Юзай тэг SRC и читать тебя будет просто Загляденье! :)
13 окт 14, 09:26    [16695010]     Ответить | Цитировать Сообщить модератору
 Re: очень простой запрос с max() и подзапросом с max()  [new]
Anatoly B
Member

Откуда:
Сообщений: 178
receiver
Был в отчете подбный фрагмент (очень упрощенно)

select max(start) || ' - ' || max(end) from table_1

Загляденье! )

Теперь пользователь хочет end получать из другой таблицы, примерно так

select max(start) || ' - ' || (select max(end) from table_2) from table_1

Получаю ORA-00937: not a single-group group function - разумно.
Вынести подзапрос в group by не можно - ORA-22818: subquery expressions not allowed here - еще раз разумно.

Отчет был реализован как один изрядный запрос.
Можно ли обойти ошибки, чтобы не реализовывать отчет как процедуру?


Так:(?)
select (select max(start) from table_1) || ' - ' || (select max(end) from table_2) from dual
13 окт 14, 10:06    [16695130]     Ответить | Цитировать Сообщить модератору
 Re: очень простой запрос с max() и подзапросом с max()  [new]
ten
Member

Откуда: Екатеринбург
Сообщений: 1672
receiver,
+
SQL> with table_1 as ( select 1 as my_start from dual union all select 2 from dual )
  2  	, table_2 as ( select 11 as my_end from dual union all select 22 from dual )
  3  select max(my_start)  || ' - ' || (select max(my_end) from table_2) as text
  4    from table_1
  5  group by 1;

TEXT
--------------------------------------------------------------------------------
2 - 22

SQL> 
SQL> 
SQL> with table_1 as ( select 1 as my_start from dual union all select 2 from dual )
  2  	, table_2 as ( select 11 as my_end from dual union all select 22 from dual )
  3  select ( select max(my_start) from table_1) || ' - ' || (select max(my_end) from table_2) as text
  4    from dual;

TEXT
--------------------------------------------------------------------------------
2 - 22
13 окт 14, 10:08    [16695139]     Ответить | Цитировать Сообщить модератору
 Re: очень простой запрос с max() и подзапросом с max()  [new]
Стоша
Guest
receiver,
 select max(max1) || '-' || max(max2) "незагляденье"
 from
 (
    select max(start) max1, null max2 from table_1
    union all
    select null max1, max(end) max2 from table_2
 );
13 окт 14, 10:12    [16695161]     Ответить | Цитировать Сообщить модератору
 Re: очень простой запрос с max() и подзапросом с max()  [new]
кит северных морей
Member

Откуда: krsk / nyc / krsk
Сообщений: 882
receiver,

table_2 коррелирован с table_1?
13 окт 14, 10:17    [16695190]     Ответить | Цитировать Сообщить модератору
 Re: очень простой запрос с max() и подзапросом с max()  [new]
receiver
Member

Откуда:
Сообщений: 262
кит северных морей
receiver,

table_2 коррелирован с table_1?


Кит, нет.


Всем признателен. Доберусь до работы, проверю - отпишусь.
Спасибо!
13 окт 14, 10:54    [16695365]     Ответить | Цитировать Сообщить модератору
 Re: очень простой запрос с max() и подзапросом с max()  [new]
receiver
Member

Откуда:
Сообщений: 262
select (select max(start) from table_1) || ' - ' || (select max(end) from table_2) from dual


Очень пригодилось, спасибо!
13 окт 14, 19:21    [16698920]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить