Oracle 中的Pivoting Insert用法

來源:互聯網
上載者:User

標籤:

1.標準Insert --單表單行插入

  文法:  INSERT INTO table [(column1,column2,...)] VALUE (value1,value2,...)   例子:  insert into dep (dep_id,dep_name) values(1,‘技術部‘);    備忘:使用標準文法只能插入一條資料,且只能在一張表中插入資料  2, 無條件 Insert all --多表多行插入    文法:INSERT [ALL] [condition_insert_clause][insert_into_clause values_clause] (subquery)    樣本:INSERT ALLINTO sal_history(emp_id,hire_date,salary) values (empid,hiredate,sal)INTO mgr_history(emp_id,manager_id,salary) values (empid,hiredate,sal)SELECT employee_id empid,hire_date hiredate,salary sal,manager_id mgrFROM employeesWHERE employee_id>200;  3,有條件的Insert    文法:INSERT [ALL | FIRST]WHEN condition THEN insert_into_clause values_clause[WHEN condition THEN] [insert_into_clause values_clause]......[ELSE] [insert_into_clause values_clause] Subquery;     樣本:Insert Allwhen id>5 then into z_test1(id, name) values(id,name)when id<>2 then into z_test2(id) values(id)else into z_test3 values(name)select id,name from z_test; 當使用ALL關鍵字時,oracle會從上至下判斷每一個條件,當條件滿足時就執行後面的into語句在上面的例子中,如果ID=6 那麼將會在z_test1中插入一條記錄,同時也在z_test2中插入一條記錄    備忘:      當使用FIRST關鍵字時,oracle會從上至下判斷每一個條件,當遇到第一個滿足時就執行後面的into語句,      同時中斷判斷的條件判斷,在上面的例子中,如果ID=6,僅僅會在z_test1中插入一條資料  4, 旋轉Insert (pivoting insert)
create table sales_source_data (employee_id number(6),week_id number(2),sales_mon number(8,2),sales_tue number(8,2),sales_wed number(8,2),sales_thur number(8,2),sales_fri number(8,2));insert into sales_source_data values (176,6,2000,3000,4000,5000,6000);
SQL> select * from sales_source_data;EMPLOYEE_ID WEEK_ID  SALES_MON  SALES_TUE  SALES_WED SALES_THUR  SALES_FRI----------- ------- ---------- ---------- ---------- ---------- ----------        176       6    2000.00    3000.00    4000.00    5000.00    6000.00
create table sales_info (employee_id number(6),week number(2),sales number(8,2));
看上面的表結構,現在將要sales_source_data表中的資料轉換到sales_info表中,這種情況就需要使用旋轉Insert 樣本如下:
insert allinto sales_info values(employee_id,week_id,sales_mon)into sales_info values(employee_id,week_id,sales_tue)into sales_info values(employee_id,week_id,sales_wed)into sales_info values(employee_id,week_id,sales_thur)into sales_info values(employee_id,week_id,sales_fri)select employee_id,week_id,sales_mon,sales_tue,sales_wed,sales_thur,sales_frifrom sales_source_data;
SQL> select * from sales_infor;EMPLYEE_ID WEEK      SALES---------- ---- ----------       176    6    2000.00       176    6    3000.00       176    6    4000.00       176    6    5000.00       176    6    6000.00SQL> 
從該例子可以看出,所謂旋轉Insert是無條件 insert all 的一種特殊應用,但這種應用被oracle官方,賦予了一個pivoting insert的名稱,即旋轉insert《FROM:http://www.cnblogs.com/einyboy/archive/2012/08/06/2624886.html》 

Oracle 中的Pivoting Insert用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.