Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Упростить запрос / 3 сообщений из 3, страница 1 из 1
01.11.2008, 14:44
    #35630616
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упростить запрос
Здравствуйте всем!

Хочу одним запросом вытащить несколько значений с таблицы. Каждое значение вычисляется с различными условиями. Например:
Код: plaintext
select * from table(values((select count(*) from TAB1),(select max(FIELD1) from TAB1),(select sum(FIELD2) from TAB1 where FIELD3> 0 ))) as b(v1,v2,v3)
Как можно упростить этот запрос? Хотел бы обратить внимание, что 1 и 2 подзапрос выполняются с одинаковыми условиями. Было бы разумно объединить их в один подзапрос -
Код: plaintext
select count(*), max(FIELD1) from TAB1
Но как поправить исходный запрос - не знаю.

С уважением, Семен Попов
...
Рейтинг: 0 / 0
01.11.2008, 15:17
    #35630751
IT-Shaman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упростить запрос
Semen PopovЗдравствуйте всем!

Хочу одним запросом вытащить несколько значений с таблицы. Каждое значение вычисляется с различными условиями. Например:
Код: plaintext
select * from table(values((select count(*) from TAB1),(select max(FIELD1) from TAB1),(select sum(FIELD2) from TAB1 where FIELD3> 0 ))) as b(v1,v2,v3)
Как можно упростить этот запрос? Хотел бы обратить внимание, что 1 и 2 подзапрос выполняются с одинаковыми условиями. Было бы разумно объединить их в один подзапрос -
Код: plaintext
select count(*), max(FIELD1) from TAB1
Но как поправить исходный запрос - не знаю.

С уважением, Семен Попов

можно попробовать так:
Код: plaintext
1.
2.
3.
4.
5.
select 
count(*), 
max(FIELD1) ,
sum(case when FIELD3 >  0  THEN FIELD2 ELSE  0  END)
from TAB1
...
Рейтинг: 0 / 0
01.11.2008, 15:37
    #35630819
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Упростить запрос
IT-Shamanможно попробовать так:
Код: plaintext
1.
2.
3.
4.
5.
select 
count(*), 
max(FIELD1) ,
sum(case when FIELD3 >  0  THEN FIELD2 ELSE  0  END)
from TAB1
Спасибо. А я всё думал, как в отбираемый элемент запихнуть условный оператор, типа как в ява, си и др. - (FIELD3>0) ? FIELD2:0 . Вы мне помогли.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Упростить запрос / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]