|
обьединить 2 запроса в один
|
|||
---|---|---|---|
#18+
Добрый день! Я написал 2 запроса. В первом мне нужно end_sysdate и выводит 20 столбцов, а во втором begin_sysdate также 20 столбцов. Запросы очень большие сократил как мог. Теперь не знаю как их объединить. select cs.id filial_id,t.region_id, r.name region, prtd.name prtd_name, si.siebel_user_name , empl.lfm , count (case when dg.id in(1,100001) and od.action_id in (5,7) then 1 end) TELEFON --novye USTANOVKI action id=5 from db.order_device od, db.abonent_group ag, db.abonent a, db.region r, db.town t, db.device_group dg, db.priority pr, db.report_date rd, db.action ac, zrdt.employee@zrdt empl, zrdt.portal_department@zrdt prtd, db.order_siebel_info si, db.connect_type ct, db.budget b, db.sap_client sap, db.crm_server cs where si.order_id = od.id and a.budget_id = b.id and sap.id = b.sap_client_id and od.abonent_group_id = ag.id and ct.id = od.new_connect_type_id and si.siebel_user_name = empl.siebel_user_name(+) and empl.portal_department_id = prtd.id(+) and a.id = od.abonent_id and r.id = t.region_id and t.id = a.town_id and dg.id = od.device_group_id and ac.id = od.action_id and sap.note in ('AFL10', 'AFL20', 'AFL30', 'UD10', 'UD20', 'UD30', 'UKO10', 'UKO20', 'UKO30', 'FRN102', 'FRN202', 'FRN302') and pr.id = od.priority_id and pr.id != 2 and rd.id = &p_report_date_id -------Изменения только ЗДЕСЬ------- and od.end_sysdate between rd.from_date and rd.to_date-- Первый Запрос -- and od.begin_sysdate between rd.from_date and rd.to_date // Второй Запрос. Изменяется только эти 2строки -- and od.end_sysdate is null //и добавляется is null и Комментируем Первый Запрос(только строку) group by cs.id,si.siebel_user_name,t.region_id, r.name, prtd.name, empl.lfm,a.id ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 15:38 |
|
обьединить 2 запроса в один
|
|||
---|---|---|---|
#18+
в итоге нужно 40 столбцов)))) В одной таблице ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 15:39 |
|
обьединить 2 запроса в один
|
|||
---|---|---|---|
#18+
1dva3, все повторяющие условия свести в едино. отличающиеся - через CASE разделить на две группы. "разворот" столбцов в две группы по 20 штук делать при помощи 1) PIVOT 2) бородатым способом на всё том же CASE/DECODE Как вариант, если обе выборки можно однозначно перенумеровать, то перенумеровать и соединить фуллджойном по столбцу-нумератору ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 17:01 |
|
обьединить 2 запроса в один
|
|||
---|---|---|---|
#18+
1dva3, 1) ... and (od.end_sysdate between rd.from_date and rd.to_date-- Первый Запрос OR ( and od.begin_sysdate between rd.from_date and rd.to_date // Второй Запрос. Изменяется только эти 2строки and od.end_sysdate is null //и добавляется is null и Комментируем Первый Запрос(только строку) ) 2) добавить в каждую групповую ф-цію case when (od.end_sysdate between rd.from_date and rd.to_date) then ххх1-20 end -- 20полей групповых ф-ций первого запроса case when (od.begin_sysdate between rd.from_date and rd.to_date and od.end_sysdate is null ) then yyy21-40 end -- для второго зы что-то Вы не договариваете, сдесь явно меньше 20 полей с учетом наличия group by ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 18:33 |
|
|
start [/forum/topic.php?fid=52&fpage=87&tid=1882897]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 321ms |
total: | 480ms |
0 / 0 |