Oracle 10g范围分区查询

时间:2012-02-23 19:27:41

标签: sql oracle oracle10g partitioning

如何按范围进行分区:一个用于低于2000年1月1日的pubdate值;一个用于pubdate值大于或等于2000年1月1日且小于2010年1月1日;以及所有pubdate值大于或等于2010年1月1日的第三个分区。

如何为分区部分编写查询?我试图查找示例,但我只是不明白分区后要放什么。

我的查询在这里:

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 个答案:

答案 0 :(得分:5)

试试这个:

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基本上表示2010年1月1日或之后没有上限值,或任何内容。