Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 Объединение нескольких запросов  [new]
hum_i
Member

Откуда:
Сообщений: 570
Добрый день! Не могли бы вы помочь в решении одной задачи: Как в коде можно объединить несколько запросов (в которых меняются только условия) в один DataSet?

К примеру один запрос такой:
select count(t.dialed) as COUNT_OUT, sum(t.duration) as SUMMA_D_OUT, sum(t.in_balance_$) as SUMMA_BL from calls_all t where t.lcal_lcal_id = 39 and t.start_time>=:START_DATE and t.start_time<=to_date(:END_DATE)+1 and t.err_code is null

А другой такой:
select count(t.dialed) as COUNT_IN, sum(t.duration) as SUMMA_D_IN from calls_all t where t.lcal_lcal_id = 38 and t.start_time>=:START_DATE and t.start_time<=to_date(:END_DATE)+1 and t.err_code is null

Заранее благодарю за помощь.
15 июн 07, 16:57    [4273950]     Ответить | Цитировать Сообщить модератору
 Re: Объединение нескольких запросов  [new]
winsky!
Member

Откуда: Киев
Сообщений: 5120
не понял - нужно объеденить результаты выполнения 2-х запросов в одной DataTable?

как можно объединить несколько запросов я не знаю
15 июн 07, 17:14    [4274107]     Ответить | Цитировать Сообщить модератору
 Re: Объединение нескольких запросов  [new]
AVI
Member

Откуда: Санкт-Петербург - St.Petersburg, Florida
Сообщений: 126
можно так:
select count(t.dialed) as COUNT, sum(t.duration) as SUMMA, sum(t.in_balance_$) as SUMMA_BL from calls_all t where t.lcal_lcal_id = 39 and t.start_time>=:START_DATE and t.start_time<=to_date(:END_DATE)+1 and t.err_code is null
UNION
select count(t.dialed) as COUNT, sum(t.duration) as SUMMA from calls_all t where t.lcal_lcal_id = 38 and t.start_time>=:START_DATE and t.start_time<=to_date(:END_DATE)+1 and t.err_code is null

или колонки должны быть разные? Вопрос уточните.
15 июн 07, 21:54    [4275332]     Ответить | Цитировать Сообщить модератору
 Re: Объединение нескольких запросов  [new]
hum_i
Member

Откуда:
Сообщений: 570
Здесь Union не подойдет, потомучто колонки должны быть разные.
18 июн 07, 08:14    [4278404]     Ответить | Цитировать Сообщить модератору
 Re: Объединение нескольких запросов  [new]
K. Oleg
Member

Откуда:
Сообщений: 8
select SUM(COUNT_OUT), SUM(COUNT_IN), SUM(SUMMA_D_OUT), SUM(SUMMA_D_IN), SUM(SUMMA_BL)
from
(
select
decode(1,COUNT_OUT,0) as COUNT_OUT,
decode(2,COUNT_OUT,0) as COUNT_IN,
decode(1,SUMMA_D_OUT,0) as SUMMA_D_OUT,
decode(2,SUMMA_D_OUT,0) as SUMMA_D_IN,
SUM(SUMMA_BL) as SUMMA_BL
from
(
select
1 as no,
count(t.dialed) as COUNT_OUT,
sum(t.duration) as SUMMA_D_OUT,
sum(t.in_balance_$) as SUMMA_BL
from
calls_all t
where
t.lcal_lcal_id = 39 and t.start_time>=:START_DATE and t.start_time<=to_date(:END_DATE)+1 and t.err_code is null
union all
select
2 as no,
count(t.dialed) as COUNT_OUT,
sum(t.duration) as SUMMA_D_OUT,
0 as SUMMA_BL
from
calls_all t
where t.lcal_lcal_id = 38 and t.start_time>=:START_DATE and t.start_time<=to_date(:END_DATE)+1 and t.err_code is null
) a
) b
18 июн 07, 13:17    [4279882]     Ответить | Цитировать Сообщить модератору
 Re: Объединение нескольких запросов  [new]
K. Oleg
Member

Откуда:
Сообщений: 8
select SUM(COUNT_OUT), SUM(COUNT_IN), SUM(SUMMA_D_OUT), SUM(SUMMA_D_IN), SUM(SUMMA_BL)
from
(
select
decode(COUNT_OUT,1,COUNT_OUT,0) as COUNT_OUT,
decode(COUNT_OUT,2,COUNT_OUT,0) as COUNT_IN,
decode(SUMMA_D_OUT,1,SUMMA_D_OUT,0) as SUMMA_D_OUT,
decode(SUMMA_D_OUT,2,SUMMA_D_OUT,0) as SUMMA_D_IN,
SUM(SUMMA_BL) as SUMMA_BL
from
(
select
1 as no,
count(t.dialed) as COUNT_OUT,
sum(t.duration) as SUMMA_D_OUT,
sum(t.in_balance_$) as SUMMA_BL
from
calls_all t
where
t.lcal_lcal_id = 39 and t.start_time>=:START_DATE and t.start_time<=to_date(:END_DATE)+1 and t.err_code is null
union all
select
2 as no,
count(t.dialed) as COUNT_OUT,
sum(t.duration) as SUMMA_D_OUT,
0 as SUMMA_BL
from
calls_all t
where t.lcal_lcal_id = 38 and t.start_time>=:START_DATE and t.start_time<=to_date(:END_DATE)+1 and t.err_code is null
) a
) b
18 июн 07, 13:23    [4279934]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить