Новичок я в этом деле... Сейчас есть такой запрос:
select Col1, Col2
from Table1 t
where (t.Transact > 360000) and ....
Секции (Partitions) строятся по полю Transact, нужный диапазон смотрю ручками (SQL Navigator'ом, например, с какой секции начинается нужная дата). Как
правильно получить номер необходимой секции?
Здравствуйте, DmitryMTS, Вы писали:
DMT>Как правильно получить номер необходимой секции?
Можно по ROWID:
SQL> create table t_partitioned (i number, s varchar2(20))
2 partition by range (i)
3 (partition p1 values less than(10),
4 partition p2 values less than (maxvalue));
Table created.
SQL> insert into t_partitioned select rownum, object_name
2 from all_objects where rownum <= 20;
20 rows created.
SQL> select t.i, o.subobject_name from t_partitioned t, all_objects o
2 where dbms_rowid.rowid_object(t.rowid) = o.object_id;
I SUBOBJECT_NAME
---------- ------------------------------
10 P2
11 P2
12 P2
13 P2
14 P2
15 P2
16 P2
17 P2
18 P2
19 P2
20 P2
I SUBOBJECT_NAME
---------- ------------------------------
9 P1
8 P1
7 P1
6 P1
5 P1
4 P1
3 P1
2 P1
1 P1
20 rows selected.
Здравствуйте, Sergey Ten, Вы писали:
ST>Можно по ROWID:
ST>...
SQL>> select t.i, o.subobject_name from t_partitioned t, all_objects o
ST> 2 where dbms_rowid.rowid_object(t.rowid) = o.object_id;
...
ST>
Надо искать
начиная с нужной партиции, во всех последующих.
Здравствуйте, Аноним, Вы писали:
А>Надо искать начиная с нужной партиции, во всех последующих.
Как вариант, могу предложить такую конструкцию:
SQL> select * from t_part partition (p2)
2 union all
3 select * from t_part partition (p3);
Количество union-ов можно формировать динамически.