Oracle 10g Range Partition Query - PullRequest
       13

Oracle 10g Range Partition Query

4 голосов
/ 23 февраля 2012

Как я могу разделить по диапазонам: один для значений pubdate меньше 1 января 2000 года;один для значений pubdate, больших или равных 1 января 2000 года и меньших, чем 1 января 2010 года;и третий раздел для всех значений публикации, больших или равных 1 января 2010 года.

Как я могу написать свой запрос для части раздела?Я пытался искать примеры, но я просто не понимаю, что ставить после раздела.

Мой запрос здесь:

CREATE table lab6_zl (
ID number not null, 
title varchar2(40), 
pubID char(3), 
pubdate date,
constraint lab6_pk primary key(ID))
Partition by range (pubdate)
(Partition one for pubdate values greater than or equal to Jan 1, 2000),
(Partition two for for pubdate values less than Jan 1, 2000),
(Partition three for all pubdate values greater than or equal to Jan 1, 2010);

1 Ответ

5 голосов
/ 24 февраля 2012

Попробуйте это:

create table LAB6_ZL
(
  ID        number not null
 ,TITLE     varchar2(40)
 ,PUBID     char(3)
 ,PUBDATE   date
 ,constraint LAB6_PK primary key(ID)
)
partition by range (PUBDATE)
  (partition TWO
     values less than (date '2000-01-01')
  ,partition ONE
     values less than (date '2010-01-01')
  ,partition THREE
     values less than (MAXVALUE));

Порядок разделов должен быть возрастающим, поэтому сначала создается раздел TWO, так как он меньше 2000 года, тогда как ONE находится между 2000 и 2009.Ключевое слово MAXVALUE в основном означает отсутствие верхнего значения или что-либо до или после 1 января 2010 года.

...