Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Merge  [new]
alient
Member

Откуда:
Сообщений: 318
Пожалуста подскажите что то умное
Нарисовал мержик

MERGE
into test2_cub a
using

----------------------------------------------------------*****************************

(SELECT c.term_rpt/**/,99/*bask_det_id*/,2/*bdg_id*/, tm.tm_end_of_mon_id/*tm_time_id*/,
/* max(a.tm_work_day_num_mon) over (partition by a.tm_year, a.tm_mon_num) max_w*/

c.id_region_treas/**/,
c.id_fund/**/, c.id_inc/**/,rg.id_budg/*bdg_local_det_id*/,
c.sum_plan_year,c.sum_allowance,c.sum_fact,c.sum_fact_other,c.sum_fact_service,c.sum_fact_source/*ne izmen pokaz*/
FROM test2_f_fact c ,wh_admin.a_region_treas_budg rg, dm.dim_time tm-------***??????????????
where c.is_active = 1
and c.id_region_treas = rg.id_region_treas
and c.date_rpt > = rg.date_beg
and c.date_rpt < = nvl(rg.date_end,sysdate)
and to_number(to_char(c.date_rpt,'yyyymmdd')) = tm.tm_time_id) m---------?????????????????

-----------------------------------*************************************


on (
a.fd_id = m.id_fund
and a.rg_treas_idm = m.id_region_treas
and a.inc_det_id = m.id_inc
and a.term_rpt = m.term_rpt
and a.bdg_id = 2
and a.bask_det_id = 99
and a.tm_time_id = m.tm_end_of_mon_id
and a.bdg_local_det_id = m.id_budg
)
when matched then update set a.plan_year_treas = m.sum_plan_year
a.plan_allow_treas = m.sum_allowance
a.fact_acc_treas = m.sum_fact
a.fact_other_treas = m.sum_fact_other
a.fact_service_treas = m.sum_fact_treas
a.fact_source_treas = m.sum_fact_source
when not matched then insert ( a.tm_time_id, a.bdg_id, a.bdg_local_det_id, a.fd_id,
a.bask_det_id, a.rg_treas_id, a.inc_det_id, a.term_rpt,
a.plan_year_treas,
a.plan_allow_treas,a.fact_acc_treas,
a.fact_other_treas, a.fact_service_treas, a.fact_source_treas )
values ( m.tm_end_of_mon_id,2,m.id_budg,m.id_fund,99,m.id_region_treas,m.id_inc,m.term_rpt, m.sum_plan_year, m.sum_allowance, m.sum_fact, m.sum_fact_other,
m.sum_fact_treas, m.sum_fact_source ) ;


и вот селект между звёздочками работает !!а вмерже не хочет компилятор останавливается на строку FROM test2_f_fact c ,wh_admin.a_region_treas_budg rg, dm.dim_time tm
и говорит осутствует ключевое слово -что ему не нравиться?????????????????????
Кто-то сталкивася с подобным плз подскажите!!!
21 мар 07, 16:54    [3925474]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
alient
Member

Откуда:
Сообщений: 318
кое что подправил это исправил там была ОПЯТатка в наборе кода Но теперь пишет ///отсутвут ключевое слово???////и останавливается вообще на самой первой строке????
21 мар 07, 17:00    [3925513]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116322
- уберите комментарии
- пользуйтесь тегом форматирования
- сессию sqlplus в студию
- версия
21 мар 07, 17:02    [3925528]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
alient
Member

Откуда:
Сообщений: 318
коментарии убраны!!!!


MERGE INTO test2_cub
using
(SELECT c.term_rpt,tm.tm_end_of_mon_id,
c.id_region_treas,
c.id_fund, c.id_inc,rg.id_budg,
c.sum_plan_year,c.sum_allowance,c.sum_fact,c.sum_fact_other,c.sum_fact_service,c.sum_fact_source
FROM test2_f_fact c,wh_admin.a_region_treas_budg rg,dim_time tm
where c.is_active = 1
and c.id_region_treas = rg.id_region_treas
and c.date_rpt > = rg.date_beg
and c.date_rpt < = nvl(rg.date_end,sysdate)
and to_number(to_char(c.date_rpt,'yyyymmdd')) = tm.tm_time_id) m
ON (test2_cub.fd_id = m.id_fund
and test2_cub.rg_treas_id = m.id_region_treas
and test2_cub.inc_det_id = m.id_inc
and test2_cub.term_rpt = m.term_rpt
and test2_cub.bdg_id = 2
and test2_cub.bask_det_id = 99
and test2_cub.tm_time_id = m.tm_end_of_mon_id
and test2_cub.bdg_local_det_id = m.id_budg
)
when matched then update set test2_cub.plan_year_treas = m.sum_plan_year
test2_cub.plan_allow_treas = m.sum_allowance
test2_cub.fact_acc_treas = m.sum_fact
test2_cub.fact_other_treas = m.sum_fact_other
test2_cub.fact_service_treas = m.sum_fact_treas
test2_cub.fact_source_treas = m.sum_fact_source
when not matched then insert ( test2_cub.tm_time_id, test2_cub.bdg_id, test2_cub.bdg_local_det_id, test2_cub.fd_id,
test2_cub.bask_det_id, test2_cub.rg_treas_id, atest2_cub.inc_det_id,test2_cub.term_rpt,
test2_cub.plan_year_treas,
test2_cub.plan_allow_treas,test2_cub.fact_acc_treas,
test2_cub.fact_other_treas, test2_cub.fact_service_treas,test2_cub.fact_source_treas )
values ( m.tm_end_of_mon_id,2,m.id_budg,m.id_fund,99,m.id_region_treas,m.id_inc,m.term_rpt, m.sum_plan_year, m.sum_allowance, m.sum_fact, m.sum_fact_other,
m.sum_fact_treas, m.sum_fact_source ) ;

пишу запрос в склнавигаторе 5.5
но наподобие такого работает

merge
into dim_time d
using (select tm_mon_desc, tm_mon_name,tm_mon_num, tm_day_in_qrt,
tm_day_in_year,tm_day_in_mon,tm_day_name,
tm_day_num_mon, tm_day_num_week,tm_end_of_mon,
tm_end_of_qrt, tm_end_of_year, tm_qrt_desc, tm_qrt_num,
tm_time_id, tm_week_end, tm_week_num, tm_year,tm_dt,
tm_end_of_ten_day, tm_ten_day_num, tm_is_holiday,
tm_work_day_num_mon, tm_end_of_mon_id, tm_day_last_year_id,
tm_work_day_num_year, tm_mon_name_gen,
tm_work_day_qnt_mon_ly
from dim_time@LINK_PROD_CURRENT.MFU
minus
select tm_mon_desc, tm_mon_name, tm_mon_num, tm_day_in_qrt,
tm_day_in_year, tm_day_in_mon, tm_day_name,
tm_day_num_mon,tm_day_num_week, tm_end_of_mon,
tm_end_of_qrt, tm_end_of_year,tm_qrt_desc, tm_qrt_num,
tm_time_id, tm_week_end, tm_week_num, tm_year, tm_dt,
tm_end_of_ten_day, tm_ten_day_num, tm_is_holiday,
tm_work_day_num_mon, tm_end_of_mon_id, tm_day_last_year_id,
tm_work_day_num_year,tm_mon_name_gen,
tm_work_day_qnt_mon_ly
from dim_time) a
on (d.tm_time_id=a.tm_time_id)
when matched then
update set
d.tm_mon_desc=a.tm_mon_desc,
d.tm_mon_name=a.tm_mon_name,
d.tm_mon_num=a.tm_mon_num,
d.tm_day_in_qrt=a.tm_day_in_qrt,
d.tm_day_in_year=a.tm_day_in_year,
d.tm_day_in_mon=a.tm_day_in_mon,
d.tm_day_name=a.tm_day_name,
d.tm_day_num_mon=a.tm_day_num_mon,
d.tm_day_num_week=a.tm_day_num_week,
d.tm_end_of_mon=a.tm_end_of_mon,
d.tm_end_of_qrt=a.tm_end_of_qrt,
d.tm_end_of_year=a.tm_end_of_year,
d.tm_qrt_desc=a.tm_qrt_desc,
d.tm_qrt_num=a.tm_qrt_num,
d.tm_week_end=a.tm_week_end,
d.tm_week_num=a.tm_week_num,
d.tm_year=a.tm_year,
d.tm_dt=a.tm_dt,
d.tm_end_of_ten_day=a.tm_end_of_ten_day ,
d.tm_ten_day_num=a.tm_ten_day_num,
d.tm_is_holiday=a.tm_is_holiday,
d.tm_work_day_num_mon=a.tm_work_day_num_mon,
d.tm_end_of_mon_id=a.tm_end_of_mon_id,
d.tm_day_last_year_id=a.tm_day_last_year_id,
d.tm_work_day_num_year=a.tm_work_day_num_year,
d.tm_mon_name_gen=a.tm_mon_name_gen,
d.tm_work_day_qnt_mon_ly=a.tm_work_day_qnt_mon_ly
when not matched then
insert (d.tm_mon_desc, d.tm_mon_name, d.tm_mon_num, d.tm_day_in_qrt,
d.tm_day_in_year, d.tm_day_in_mon, d.tm_day_name,
d.tm_day_num_mon, d.tm_day_num_week, d.tm_end_of_mon,
d.tm_end_of_qrt, d.tm_end_of_year, d.tm_qrt_desc, d.tm_qrt_num,
d.tm_time_id, d.tm_week_end, d.tm_week_num, d.tm_year, d.tm_dt,
d.tm_end_of_ten_day, d.tm_ten_day_num, d.tm_is_holiday,
d.tm_work_day_num_mon, d.tm_end_of_mon_id, d.tm_day_last_year_id,
d.tm_work_day_num_year, d.tm_mon_name_gen,
d.tm_work_day_qnt_mon_ly)
values (a.tm_mon_desc, a.tm_mon_name, a.tm_mon_num, a.tm_day_in_qrt,
a.tm_day_in_year, a.tm_day_in_mon, a.tm_day_name,
a.tm_day_num_mon, a.tm_day_num_week, a.tm_end_of_mon,
a.tm_end_of_qrt, a.tm_end_of_year, a.tm_qrt_desc, a.tm_qrt_num,
a.tm_time_id, a.tm_week_end, a.tm_week_num, a.tm_year, a.tm_dt,
a.tm_end_of_ten_day, a.tm_ten_day_num, a.tm_is_holiday,
a.tm_work_day_num_mon, a.tm_end_of_mon_id, a.tm_day_last_year_id,
a.tm_work_day_num_year, a.tm_mon_name_gen,
a.tm_work_day_qnt_mon_ly);
21 мар 07, 17:53    [3925905]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
alient
Member

Откуда:
Сообщений: 318
останавливается на первой строке или
на FROM test2_f_fact c,wh_admin.a_region_treas_budg rg,dim_time tm
посреди проверенного рабочего запроса
21 мар 07, 17:55    [3925915]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116322
"У Вас ус отклеился"

В смысле ON пропал
21 мар 07, 18:00    [3925959]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
alient
Member

Откуда:
Сообщений: 318
он там есть посреди так красиво не получается вставлять как в навигаторе!!!
21 мар 07, 18:04    [3925978]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6918
alient
он там есть посреди так красиво не получается вставлять как в навигаторе!!!

тег SRC
select * from dual
21 мар 07, 18:06    [3925988]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
alient
Member

Откуда:
Сообщений: 318
MERGE  INTO test2_cub 
  using 
        (SELEcT c.term_rpt,tm.tm_end_of_mon_id,c.id_region_treas,c.id_fund,c.id_inc,rg.id_budg,
       c.sum_plan_year,c.sum_allowance,c.sum_fact,c.sum_fact_other,c.sum_fact_service,c.sum_fact_source
  FROM test2_f_fact c,wh_admin.a_region_treas_budg rg,dim_time tm
  where c.is_active = 1
  and   c.id_region_treas = rg.id_region_treas
  and   c.date_rpt > =  rg.date_beg
  and   c.date_rpt < = nvl(rg.date_end,sysdate)
  and   to_number(to_char(c.date_rpt,'yyyymmdd')) = tm.tm_time_id) m
        ON (
                 test2_cub.fd_id = m.id_fund
            and  test2_cub.rg_treas_id = m.id_region_treas
            and  test2_cub.inc_det_id = m.id_inc
            and  test2_cub.term_rpt = m.term_rpt
            and  test2_cub.bdg_id = 2
            and  test2_cub.bask_det_id = 99
            and  test2_cub.tm_time_id = m.tm_end_of_mon_id
            and  test2_cub.bdg_local_det_id = m.id_budg
            )
       when matched then update set test2_cub.plan_year_treas = m.sum_plan_year
                                    test2_cub.plan_allow_treas = m.sum_allowance
                                    test2_cub.fact_acc_treas = m.sum_fact
                                    test2_cub.fact_other_treas = m.sum_fact_other
                                    test2_cub.fact_service_treas = m.sum_fact_treas
                                    test2_cub.fact_source_treas = m.sum_fact_source
       when not matched then insert ( test2_cub.tm_time_id, test2_cub.bdg_id, test2_cub.bdg_local_det_id, test2_cub.fd_id,
       test2_cub.bask_det_id, test2_cub.rg_treas_id, atest2_cub.inc_det_id,test2_cub.term_rpt,
       test2_cub.plan_year_treas,            
       test2_cub.plan_allow_treas,test2_cub.fact_acc_treas,
       test2_cub.fact_other_treas, test2_cub.fact_service_treas,test2_cub.fact_source_treas )
       values (  m.tm_end_of_mon_id,2,m.id_budg,m.id_fund,99,m.id_region_treas,m.id_inc,m.term_rpt, m.sum_plan_year, m.sum_allowance, m.sum_fact, m.sum_fact_other,
        m.sum_fact_treas, m.sum_fact_source ) ;
21 мар 07, 18:13    [3926037]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
alient
Member

Откуда:
Сообщений: 318
select*from dual
результат

rownum | dummy
________________
1 | x
21 мар 07, 18:16    [3926050]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
Ales Protiv
Member

Откуда: Прага
Сообщений: 1872
alient
select*from dual
результат

rownum | dummy
________________
1 | x


Чётко работает :)
21 мар 07, 18:23    [3926083]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116322
alient
он там есть посреди так красиво не получается вставлять как в навигаторе!!!


За это пардон, но все таки отклеился :-)
В UPDATE нету запятых между присваиваниями значений полям.
21 мар 07, 18:26    [3926097]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
alient
Member

Откуда:
Сообщений: 318
ERGE  INTO test2_cub 
  using 
        (SELECT c.term_rpt,tm.tm_end_of_mon_id,c.id_region_treas,c.id_fund,c.id_inc,rg.id_budg,
       c.sum_plan_year,c.sum_allowance,c.sum_fact,c.sum_fact_other,c.sum_fact_service,c.sum_fact_source,
  FROM test2_f_fact c,wh_admin.a_region_treas_budg rg,dim_time tm
  where c.is_active = 1
  and   c.id_region_treas = rg.id_region_treas
  and   c.date_rpt > =  rg.date_beg
  and   c.date_rpt < = nvl(rg.date_end,sysdate)
  and   to_number(to_char(c.date_rpt,'yyyymmdd')) = tm.tm_time_id) m
        ON (
                 test2_cub.fd_id = m.id_fund
            and  test2_cub.rg_treas_id = m.id_region_treas
            and  test2_cub.inc_det_id = m.id_inc
            and  test2_cub.term_rpt = m.term_rpt
            and  test2_cub.bdg_id = 2
            and  test2_cub.bask_det_id = 99
            and  test2_cub.tm_time_id = m.tm_end_of_mon_id
            and  test2_cub.bdg_local_det_id = m.id_budg
            )
       when matched then update set test2_cub.plan_year_treas = m.sum_plan_year,
                                    test2_cub.plan_allow_treas = m.sum_allowance,
                                    test2_cub.fact_acc_treas = m.sum_fact,
                                    test2_cub.fact_other_treas = m.sum_fact_other,
                                    test2_cub.fact_service_treas = m.sum_fact_treas,
                                    test2_cub.fact_source_treas = m.sum_fact_source
       when not matched then insert ( test2_cub.tm_time_id, test2_cub.bdg_id, test2_cub.bdg_local_det_id, test2_cub.fd_id,
       test2_cub.bask_det_id, test2_cub.rg_treas_id, test2_cub.inc_det_id,test2_cub.term_rpt,
       test2_cub.plan_year_treas,            
       test2_cub.plan_allow_treas,test2_cub.fact_acc_treas,
       test2_cub.fact_other_treas, test2_cub.fact_service_treas,test2_cub.fact_source_treas )
       values (  m.tm_end_of_mon_id,2,m.id_budg,m.id_fund,99,m.id_region_treas,m.id_inc,m.term_rpt, m.sum_plan_year, m.sum_allowance, m.sum_fact, m.sum_fact_other,
        m.sum_fact_service, m.sum_fact_source ) ;
        

признаю один отклеился я его приклеил но снова отклеилось что то другое??
останавливается на первой строке и пишет
отсутсвиует выражение
21 мар 07, 18:35    [3926129]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
alf123
Guest
U Vas problemy s copy-paste ili snova us otkleilsja:
ERGE  INTO test2_cub 
MERGE  INTO test2_cub 
21 мар 07, 18:38    [3926143]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116322
alient
c.sum_plan_year,c.sum_allowance,c.sum_fact,c.sum_fact_other,c.sum_fact_service,c.sum_fact_source,
FROM test2_f_fact c,wh_admin.a_region_treas_budg rg,dim_time tm
признаю один отклеился я его приклеил но снова отклеилось что то другое??


Всенепременно. Обратите внимание на запятую перед FROM.
Может сядете и аккуратненько все запишите ?
Честно, надоело блох ловить ...
21 мар 07, 18:41    [3926152]     Ответить | Цитировать Сообщить модератору
 Re: Merge  [new]
alient
Member

Откуда:
Сообщений: 318
Заработало то не было запятых то лишняя оказалась вдруг как она там появилась проверял же запрос юзинга???Вообщем всем злобным и сильным програмистам спасибо за то побили комп так и надо другого языка он не понимает!!!Если что толпой накостыляем всем кто против нас !!
21 мар 07, 18:43    [3926163]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить