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

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
BEGIN 
    for data_r1  IN (SELECT ddate  from tabl1  where ddate between '01.09.2017' and '11.09.2017' )
LOOP
   BEGIN
       INSERT INTO Table3
       SELECT data_r1.ddate 
                , Account
                , col3
                , col4
                , row_number() over (order by Account asc, data_r1.ddate+1 asc)
       FROM table2;
   END;
END;



В результате получаю такой результат

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
'01.09.2017', '123', 1
'01.09.2017', '234', 1
'01.09.2017', '456', 1
'02.09.2017', '123', 2
'02.09.2017', '234', 2
'02.09.2017', '456', 2
............................
'11.09.2017', '123', 11
'11.09.2017', '234', 11
'11.09.2017', '456', 11




как получить
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
'01.09.2017', '123', 1
'01.09.2017', '234', 2
'01.09.2017', '456', 3
'02.09.2017', '123', 4
'02.09.2017', '234', 5
'02.09.2017', '456', 6
............................
'11.09.2017', '123', 31
'11.09.2017', '234', 32
'11.09.2017', '456', 33



порядковый номер строки.
пробовал сиквенс, ORA-02287
...
Рейтинг: 0 / 0
Rownum
    #39519009
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такой еще вариант был
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare
x number:=0;

BEGIN 
    for data_r1  IN (SELECT ddate  from tabl1  where ddate between '01.09.2017' and '11.09.2017' )
LOOP
   BEGIN
       INSERT INTO Table3
       SELECT data_r1.ddate 
                , Account
                , col3
                , col4
                , x --row_number() over (order by Account asc, data_r1.ddate+1 asc)
       FROM table2;
   END;
x:=x+1;
END;


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

использовать сиквенс не?
...
Рейтинг: 0 / 0
Rownum
    #39519016
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwaitне результат тот же. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Rownum
    #39519024
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarock,

да пробовал и сиквенс
ORA-02287 вылетает
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
BEGIN 
    for data_r1  IN (SELECT ddate  from tabl1  where ddate between '01.09.2017' and '11.09.2017' )
LOOP
   BEGIN
       INSERT INTO Table3
       SELECT data_r1.ddate 
                , Account
                , col3
                , col4
                , сиквенс.nexval
       FROM table2;
   END;
END;
...
Рейтинг: 0 / 0
Rownum
    #39519027
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwaitда пробовал и сиквенс
ORA-02287 вылетаетВрёшь/тупишь.
...
Рейтинг: 0 / 0
Rownum
    #39519031
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Не исключено)
...
Рейтинг: 0 / 0
Rownum
    #39519032
Бельфя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как эти анонимные блоки без end loop; работают?
...
Рейтинг: 0 / 0
Rownum
    #39519046
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwait,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t as (select '01.09.2017' ddate from dual union all
select '02.09.2017' ddate from dual union all
select '11.09.2017' ddate from dual )
, table2 as (select '123' id from dual union all
select '234' id from dual union all
select '456' id from dual)

select t.ddate, t2.id, row_number() over (order by ddate, t2.id) rn
from table2 t2, t
 



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DDATE	ID	RN
01.09.2017	123	1
01.09.2017	234	2
01.09.2017	456	3
02.09.2017	123	4
02.09.2017	234	5
02.09.2017	456	6
11.09.2017	123	7
11.09.2017	234	8
11.09.2017	456	9
...
Рейтинг: 0 / 0
Rownum
    #39519056
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бельфя,

Ага, каюсь, поправил.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
BEGIN 
    for data_r1  IN (SELECT ddate  from tabl1  where ddate between '01.09.2017' and '11.09.2017' )
LOOP
   BEGIN
       INSERT INTO Table3
       SELECT data_r1.ddate 
                , Account
                , col3
                , col4
                , row_number() over (order by Account asc, data_r1.ddate+1 asc)
       FROM table2;
   END;
END LOOP;
END; 
...
Рейтинг: 0 / 0
Rownum
    #39519072
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwait,

убери цикл.
...
Рейтинг: 0 / 0
Rownum
    #39519085
Бельфя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или добавь второй цикл.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
declare
  v_count number := 1;
begin
  for data_r1 in (select ddate
                    from tabl1
                   where ddate between '01.09.2017' and '11.09.2017')
  loop
    for inside_cur in (select data_r1.ddate
                             ,account
                             ,col3
                             ,col4
                         from table2)
    loop
      insert into table3
      values
        (inside_cur.ddate, inside_cur.account, inside_cur.col3, inside_cur.col4, v_count);
      v_count := v_count + 1;
    end loop;
  end loop;
end;


Но правильнее сделать sql'ем
...
Рейтинг: 0 / 0
Rownum
    #39519089
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwait,

добавь commit в цикл.
...
Рейтинг: 0 / 0
Rownum
    #39519116
maxwait,

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


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