在一个分区中对一个值进行分区,在另一个分区中对其余值进行分区

时间:2017-01-20 06:54:18

标签: oracle partitioning ddl

例如,我有一个表名Emp,它有empname,names,salary作为列。我希望这个表有2个分区,比如一个分区中的管理员和一个分区中的休息(工程师,工人,职员)的员工列表。

有人可以帮助如何创建它

2 个答案:

答案 0 :(得分:2)

在这种情况下,您将不得不使用基于LIST的分区。在ROLE = MANAGER中创建一个关联,并创建另一个默认的分区。这是一个可以帮助你的例子。

Exclude values from oracle partition

示例

CREATE TABLE EMPLOYEE (EMP_ID VARCHAR2(25), 
                       EMP_NAME VARCHAR2(250),
                       ROLE VARCHAR2(100)
                       )
     PARTITION BY LIST (ROLE) 
     (
     PARTITION part_managers
        VALUES ('MANAGER'),

     PARTITION part_others
        VALUES (DEFAULT)
     );

答案 1 :(得分:0)

请参阅以下网址和示例: 例如,以下SQL语句将按范围表销售拆分划分的sales_Q4_2007分区拆分为与下一年的季度对应的五个分区。在此示例中,分区sales_Q4_2008隐式地成为拆分分区的上限。

ALTER TABLE sales SPLIT PARTITION sales_Q4_2007 INTO
( PARTITION sales_Q4_2007 VALUES LESS THAN (TO_DATE('01-JAN-2008','dd-MON-yyyy')),
  PARTITION sales_Q1_2008 VALUES LESS THAN (TO_DATE('01-APR-2008','dd-MON-yyyy')),
  PARTITION sales_Q2_2008 VALUES LESS THAN (TO_DATE('01-JUL-2008','dd-MON-yyyy')),
  PARTITION sales_Q3_2008 VALUES LESS THAN (TO_DATE('01-OCT-2008','dd-MON-yyyy')),
  PARTITION sales_Q4_2008);

对于按列表分区的示例表客户,以下语句将分区Europe拆分为三个分区。

ALTER TABLE list_customers SPLIT PARTITION Europe INTO
  (PARTITION western-europe VALUES ('GERMANY', 'FRANCE'),
   PARTITION southern-europe VALUES ('ITALY'), 
   PARTITION rest-europe);

https://docs.oracle.com/database/121/VLDBG/GUID-01C14320-0D7B-48BE-A5AD-003DDA761277.htm

你会对此有所了解。