powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / хз, наверно уработался.
48 сообщений из 48, показаны все 2 страниц
хз, наверно уработался.
    #39505089
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть такой код :

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
......
for rec in ( select  t.PARTNER 
                from  t
            WHERE 1=1
                AND t.date >= '01.01.2017' order by t.PARTNER asc
           ) loop
   
   select max(r.date)
     into v_r
     from HISTORY r
    where rec.PARTNER = r.partner;
    
 merge into HISTORY t
            using(SELECT u.partner,                         
            FROM  uc u
            WHERE 1=1
                     AND u.dater >= nvl(v_r, to_date ('01.01.2017', 'dd.mm.yyyy'))) w
            on (t.PARTNER = w.PARTNER )
            WHEN NOT MATCHED THEN INSERT 
            (t.PARTNER
           ) 
            VALUES 
            (w.partner
           )
            ;



гарантированно ли в v_r всегда получу null, в случае если не явный курсор rec вернул того партнера которого нет в HISTORY r.
какие могут быть сложности?
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505098
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarockесть такой код :

Код: plsql
1.
2.
3.
4.
5.
6.
7.
......
for rec in ( select  t.PARTNER 
                from  t
            WHERE 1=1
                AND t.date >= '01.01.2017' order by t.PARTNER asc --NLS мина
           ) loop
..



гарантированно ли в v_r всегда получу null, в случае если не явный курсор rec вернул того партнера которого нет в HISTORY r.
какие могут быть сложности?

Для чего здесь цикл? Почему нельзя написать просто один merge с (select partner, case when max(date) > to_date ...) как источник?
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505103
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envДля чего здесь цикл?+1
saxarockгарантированно ли в v_r всегда получу null, в случае если не явный курсор rec вернул того партнера которого нет в HISTORY r.На ручнике? Что можно вернуть из ничего?
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505110
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarockесть такой код :
Код: plsql
1.
2.
3.
4.
5.
6.
......

                AND t.date >= '01.01.2017' order by t.PARTNER asc
...
                     AND u.dater >= nvl(v_r, to_date ('01.01.2017', 'dd.mm.yyyy'))) w
...




NLS в одном куске криво, в другом прямо
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505112
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env, Elic,
Env про явное приведение к типам знаю, но спс за выделение.
Смысл в том чтобы дергать данные у найденых партнеров с момента последнего merge, r.date =sysdate а не смотреть все время с 01.01.2017. Так что по вопросу?
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505113
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarock,

Какая связь между таблицами t и uc и их полями t.date и u.dater?
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505119
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarock,

навскидку, как-то так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
merge into history tgt 
using (
       select u.partner 
       from uc u 
            inner join (select t.partner from t where t.date >= date '2017-01-01') tt
              on tt.partner = u.partner
            left join (select h.partner, max(h.date) hist_date from history h group by h.partner) mh
              on mh.partner = u.partner
       where u.dater >= nvl(mh.hist_date, date '2017-01-01')
       ) src  
on (src.partner = tgt.partner) ....


Несколько напрягает отсутствие понимания, сколько записей на одного partner приходится в uc.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505123
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

При желании можно отсечку по t и внутрь mh протолкнуть
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505125
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envКакая связь между таблицами t и uc и их полями t.date и u.dater?

Связь описана в merge, r.date = sysdate каждого merge. Смысл сего я описал выше.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505128
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarock
гарантированно ли в v_r всегда получу null, в случае если не явный курсор rec вернул того партнера которого нет в HISTORY r.

да, гарантировано получите null

.....
stax
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505129
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envсколько записей на одного partner приходится в uc.
связь 1=1.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505131
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxда, гарантировано получите null


При любой агрегатной функции?
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505134
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarock,

Если явно не будете оборачивать.
Я правильно Вас понял, что в цикле между select и merge есть дополнительная логика?
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505143
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarock,

насчет любой, а не уверен (много новых екзотических ф-ций)

древние (и select без group by) вернут null

....
stax
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505145
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

без group by можно и no_data_found словить
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505148
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarockStaxда, гарантировано получите null


При любой агрегатной функции?

первая по списку

Код: plsql
1.
2.
3.
4.
5.
6.
  1* select collect(HIREDATE) d from emp where ename='stax'
SQL> /

D
--------------------------------------------------------------------------------
SYSTPVriabtHgbO/gU0gEqMCtuw==()



......
stax
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505155
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxsaxarock,

насчет любой, а не уверен (много новых екзотических ф-ций)

древние (и select без group by) вернут null

....
stax
приврал count% вернет 0

.....
stax
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505160
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envЯ правильно Вас понял, что в цикле между select и merge есть дополнительная логика?
да есть, saxarockСмысл в том чтобы дергать данные у найденных партнеров с момента последнего merge, r.date = sysdate(т.е. текущая дата merge) а не смотреть все время с 01.01.2017.

т.е. искать в w
Код: plsql
1.
(select ... from ... where u.dater >= nvl(v_r,  to_date ('01.01.2017', 'dd.mm.yyyy')) )


не все время за to_date ('01.01.2017', 'dd.mm.yyyy'), а с даты max(r.date) (даты последнего merge, я ж говорил что saxarockr.date = sysdate каждого merge. )
env, не внимательно читаете.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505162
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envStax,

без group by можно и no_data_found словить

Код: plsql
1.
2.
3.
4.
5.
6.
  1* select cume_dist() over(order by ename) d from emp where ename='stax'
SQL> /

no rows selected

SQL>



....
stax
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505167
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

Ладно, ладно насчет любой агрегатной я загнул.))
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505172
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarock,

Сумбурная постановка задачи предполагает сумбурные же ответы.

Из первого поста не видно наличие промежуточной логики между for loop и merge - откуда и напрашивается решение исходной задачи одним запросом.


saxarockenv, не внимательно читаете.
Код: plsql
1.
u.dater >= nvl(mh.hist_date, date '2017-01-01')


правда?

В такой постановке, да, max() вернёт null при отсутствии записей, подпадающей под условие.

Стас, а теперь тоже самое но с select ... into
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505182
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо. Насчет любой агрегатной можно поразмышлять дальше.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505186
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envСумбурная постановка задачи предполагает сумбурные же ответы.


согласен, без внятного тз, результат хз.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505191
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envСтас, а теперь тоже самое но с select ... into

для какой ф-ции?

cume_dist немножко приврал, аналитика, а не агрегация

зи
по списку шел

.....
stax
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505196
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

пока что не нарвался на no data found
не нулл
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  1  declare
  2   v_pr number;
  3  begin
  4   SELECT PERCENT_RANK(15000, .05) WITHIN GROUP (ORDER BY sal, comm)
  5   INTO v_pr
  6   FROM emp
  7   where ename='stax';
  8   dbms_output.put_line('PERCENT_RANK='||v_pr);
  9* end;
SQL> /
PERCENT_RANK=0

PL/SQL procedure successfully completed.



.....
stax
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505240
Озо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Он как обычно придрался к запросу с оконной функцией. Мог бы и промолчать.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505268
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзоStax,

Он как обычно придрался к запросу с оконной функцией. Мог бы и промолчать.
нет

то я слукавил

зы
пока что не словил no data found


.....
stax
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505276
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envStax,

без group by можно и no_data_found словить
сдаюсь
stats%, SYS_OP_ZONE_ID, XMLAGG пропустил

сдаюсь

кагда но дата фоунд?

.....
stax
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505290
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,
никогда .
так устроен sql.
Это базовое правило - агрегатный запрос без явной/подразумеваемой группировки не может дать no_data_found.
Если в результате поисков ты найдешь такую ситуацию, то даже не надейся, что мир рухнул от того, что система сломалась.
Ты просто попал на группировку, соображай как.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505305
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyагрегатный запрос без явной/подразумеваемой группировки не может дать no_data_found.А я устал развеивать этот миф из документации.
Код: plaintext
HAVING
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505374
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyStax,
никогда .
так устроен sql.
Это базовое правило - агрегатный запрос без явной/подразумеваемой группировки не может дать no_data_found.
Если в результате поисков ты найдешь такую ситуацию, то даже не надейся, что мир рухнул от того, что система сломалась.
Ты просто попал на группировку, соображай как.

20722845
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505376
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicboobyагрегатный запрос без явной/подразумеваемой группировки не может дать no_data_found.А я устал развеивать этот миф из документации.
Код: plaintext
HAVING


отдохните чуток и развейте
20722845

.....
stax
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505381
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Озокак обычно придрался к запросу с оконной функцией
типа того
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505391
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxотдохните чуток и развейте
20722845 Ты либо выпал из темы, либо, как обычно, не можешь донести мысль.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505395
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

Неудачная формулировка с моей стороны, имел в виду без агрегации, вопрос насчёт no_data_found в select into, емнип, тут года так с 2004-го мусолится так или иначе. И Соломон с Виталием неоднократно писали на эту тему.
Кстати, ты вроде тоже в этих топиках участвовал.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505404
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envsaxarockесть такой код :

Код: plsql
1.
2.
3.
4.
5.
6.
7.
......
for rec in ( select  t.PARTNER 
                from  t
            WHERE 1=1
                AND t.date >= '01.01.2017' order by t.PARTNER asc --NLS мина
           ) loop
..



гарантированно ли в v_r всегда получу null, в случае если не явный курсор rec вернул того партнера которого нет в HISTORY r.
какие могут быть сложности?

Для чего здесь цикл? Почему нельзя написать просто один merge с (select partner, case when max(date) > to_date ...) как источник?
А ты пример приведи, советовать каждый может
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505408
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

Чукча снова не читатель?
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505410
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

Как думаешь, почему иногда не рекомендуется использовать merge ?
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505411
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envRMagistr2015,

Чукча снова не читатель?

Это ты к себе что ли?
Пиши ка по теме, а то флуду только от тебя, и не капли знаний
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505414
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015почему иногда не рекомендуется использовать merge
Расскажи, с радостью послушаю.

Это не имеет никакого отношения к исходной задаче, но тем не менее.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505415
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015Пиши ка по теме,
Подай пример
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505418
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envsaxarockесть такой код :

Код: plsql
1.
2.
3.
4.
5.
6.
7.
......
for rec in ( select  t.PARTNER 
                from  t
            WHERE 1=1
                AND t.date >= '01.01.2017' order by t.PARTNER asc --NLS мина
           ) loop
..



гарантированно ли в v_r всегда получу null, в случае если не явный курсор rec вернул того партнера которого нет в HISTORY r.
какие могут быть сложности?

Для чего здесь цикл? Почему нельзя написать просто один merge с (select partner, case when max(date) > to_date ...) как источник?
Прежде чем советовать неэффективные решения, выяснил бы обстановку, что и как у человека, а потом уже лезть с "умными" мыслями, как тебе примерчик? )))
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505433
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarockenvСумбурная постановка задачи предполагает сумбурные же ответы.


согласен, без внятного тз, результат хз.

RMagistr2015Прежде чем советовать неэффективные решения
Так приведи эффективное.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505439
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015советовать каждый можетУбожество, советую: завянь.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505443
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

Тыж профессионал, или ты джуниора что ли врубил? Может тебе ещё и сиську мамкину подать?
Тебе на ошибки указали, головой-то подумай, или всё за тебя делать "профессионал"...?
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505444
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Ты вообще не воспитуемый, за тебя да же браться не буду
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505450
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015или всё за тебя делать
Сделай. Я не против.
...
Рейтинг: 0 / 0
хз, наверно уработался.
    #39505454
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

Надо вставить свои 5 копеек. Ты сам, то дельное, чо советовал?
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / хз, наверно уработался.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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