|
|
|
Объединение нескольких запросов
|
|||
|---|---|---|---|
|
#18+
Добрый день! Не могли бы вы помочь в решении одной задачи: Как в коде можно объединить несколько запросов (в которых меняются только условия) в один 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.06.2007, 16:57 |
|
||
|
Объединение нескольких запросов
|
|||
|---|---|---|---|
|
#18+
не понял - нужно объеденить результаты выполнения 2-х запросов в одной DataTable? как можно объединить несколько запросов я не знаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2007, 17:14 |
|
||
|
Объединение нескольких запросов
|
|||
|---|---|---|---|
|
#18+
можно так: 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.06.2007, 21:54 |
|
||
|
Объединение нескольких запросов
|
|||
|---|---|---|---|
|
#18+
Здесь Union не подойдет, потомучто колонки должны быть разные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2007, 08:14 |
|
||
|
Объединение нескольких запросов
|
|||
|---|---|---|---|
|
#18+
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.06.2007, 13:17 |
|
||
|
Объединение нескольких запросов
|
|||
|---|---|---|---|
|
#18+
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.06.2007, 13:23 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=34599131&tid=1352739]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
252ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 539ms |

| 0 / 0 |
