2016-11-14 58 views
0
insert into att_sch_emp_tmp(
    COMPANYCODE, DIVISIONCODE, CATEGORYICSTABLECODE, 
    CATEGORYCODE, CATEGORYTYPE,CODE, 
    FACTORYCODE, DEPARTMENTDEPARTMENTCODE, SECTIONSECTIONICSTABLECODE, 
    SECTIONSECTIONCODE, MATYPEMACHINETYPEICSTABLECODE, MACHINETYPEMACHINETYPECODE, 
    MACHINENOMACHINENOICSTABLECODE, MACHINENOMACHINENOCODE, GRADEICSTABLECODE, 
    GRADECODE, CADREICSTABLECODE, CADRECODE, 
    DESGDESIGNATIONICSTABLECODE, DESGDESIGNATIONCODE, EMPROLECODE, 
    SUBCTGSUBCATEGORYICSTABLECODE, SUBCATEGORYSUBCATEGORYCODE, FROMDATE, 
    TODATE, CONFIRMATIONDATE, RESIGNDATE, 
    JOININGDATE, CREATIONTIMESTAMP, SERIAL, 
    COSTCENTERBADLICODE, HOLIDAYCODE, EFFECTIVEDATE, 
    SHIFTROTATIONCODE, WEEKLYOFF, FREQUENCY, 
    FREQUENCYDAYS 
) 
    select COMPANYCODE, DIVISIONCODE, CATEGORYICSTABLECODE, 
     CATEGORYCODE, CATEGORYTYPE,CODE, 
     FACTORYCODE, DEPARTMENTDEPARTMENTCODE, SECTIONSECTIONICSTABLECODE, 
     SECTIONSECTIONCODE, MATYPEMACHINETYPEICSTABLECODE, MACHINETYPEMACHINETYPECODE, 
     MACHINENOMACHINENOICSTABLECODE, MACHINENOMACHINENOCODE, GRADEICSTABLECODE, 
     GRADECODE, CADREICSTABLECODE, CADRECODE, 
     DESGDESIGNATIONICSTABLECODE, DESGDESIGNATIONCODE, EMPROLECODE, 
     SUBCTGSUBCATEGORYICSTABLECODE, SUBCATEGORYSUBCATEGORYCODE, FROMDATE, 
     TODATE, CONFIRMATIONDATE, RESIGNDATE, 
     JOININGDATE, p_creationtimestamp, ROW_NUMBER() OVER from dual(), 
     ' ', ' ', sysdate, 
     ' ', 0, 0, 
     0 
    from employee 
+0

,而在這條線 編譯我得到一個錯誤 ROW_NUMBER()OVER從雙()缺少窗口規範這個功能 – Maujood

回答

1

正確的語法,而不分區:

SELECT ...... 
     ROW_NUMBER() OVER(ORDER BY 1) 
FROM ... 

如果你想它由一個部門或W/E後,分配:

SELECT ...... 
     ROW_NUMBER() OVER(PARTITION BY YourColumn ORDER BY TheOrderColumn) 
FROM ... 
0

聲明與雙是不正確的。 Dual是您需要指定應如何計算row_number的表格。你可能需要:

select COMPANYCODE, DIVISIONCODE, CATEGORYICSTABLECODE, 
     CATEGORYCODE, CATEGORYTYPE,CODE, 
     FACTORYCODE, DEPARTMENTDEPARTMENTCODE, SECTIONSECTIONICSTABLECODE, 
     SECTIONSECTIONCODE, MATYPEMACHINETYPEICSTABLECODE, MACHINETYPEMACHINETYPECODE, 
     MACHINENOMACHINENOICSTABLECODE, MACHINENOMACHINENOCODE, GRADEICSTABLECODE, 
     GRADECODE, CADREICSTABLECODE, CADRECODE, 
     DESGDESIGNATIONICSTABLECODE, DESGDESIGNATIONCODE, EMPROLECODE, 
     SUBCTGSUBCATEGORYICSTABLECODE, SUBCATEGORYSUBCATEGORYCODE, FROMDATE, 
     TODATE, CONFIRMATIONDATE, RESIGNDATE, 
     JOININGDATE, p_creationtimestamp, ROW_NUMBER() OVER (order by 1), 
     ' ', ' ', sysdate, 
     ' ', 0, 0, 
     0 
    from employee; 

如果你只是想排無須提出任何具體的分區或訂單號可以用rownum取代ROW_NUMBER() OVER (order by 1)。或者,如果您想要某個指定的訂單,請按指示訂單的列名替換1

另外您需要注意的是,當您執行第二次插入時,您的SERIAL將從1重新開始。如果你需要有唯一編號,請不要

create sequence serial_seq start with 1 increment by 1;

及用途:

select COMPANYCODE, DIVISIONCODE, CATEGORYICSTABLECODE, 
     CATEGORYCODE, CATEGORYTYPE,CODE, 
     FACTORYCODE, DEPARTMENTDEPARTMENTCODE, SECTIONSECTIONICSTABLECODE, 
     SECTIONSECTIONCODE, MATYPEMACHINETYPEICSTABLECODE, MACHINETYPEMACHINETYPECODE, 
     MACHINENOMACHINENOICSTABLECODE, MACHINENOMACHINENOCODE, GRADEICSTABLECODE, 
     GRADECODE, CADREICSTABLECODE, CADRECODE, 
     DESGDESIGNATIONICSTABLECODE, DESGDESIGNATIONCODE, EMPROLECODE, 
     SUBCTGSUBCATEGORYICSTABLECODE, SUBCATEGORYSUBCATEGORYCODE, FROMDATE, 
     TODATE, CONFIRMATIONDATE, RESIGNDATE, 
     JOININGDATE, p_creationtimestamp, serial_seq.nextval, 
     ' ', ' ', sysdate, 
     ' ', 0, 0, 
     0 
    from employee;