powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / обьединить 2 запроса в один
5 сообщений из 5, страница 1 из 1
обьединить 2 запроса в один
    #39762917
1dva3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Я написал 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
...
Рейтинг: 0 / 0
обьединить 2 запроса в один
    #39762918
1dva3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в итоге нужно 40 столбцов)))) В одной таблице
...
Рейтинг: 0 / 0
обьединить 2 запроса в один
    #39762982
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1dva3,

все повторяющие условия свести в едино. отличающиеся - через CASE разделить на две группы.
"разворот" столбцов в две группы по 20 штук делать при помощи
1) PIVOT
2) бородатым способом на всё том же CASE/DECODE

Как вариант, если обе выборки можно однозначно перенумеровать, то перенумеровать и соединить фуллджойном по столбцу-нумератору
...
Рейтинг: 0 / 0
обьединить 2 запроса в один
    #39763040
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
обьединить 2 запроса в один
    #39763189
1dva3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / обьединить 2 запроса в один
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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