`

oracle 多表插入 insert all 用法(即列转行)

 
阅读更多

建表语句:

 

create table ORDERS(CUSTOMER_ID NUMBER,SUM_ORDERS  NUMBER);   
create table small_customers(CUSTOMER_ID NUMBER,SUM_ORDERS  NUMBER);   
create table medium_customers(CUSTOMER_ID NUMBER,SUM_ORDERS  NUMBER); 
create table large_customers(CUSTOMER_ID NUMBER,SUM_ORDERS  NUMBER);   
create table order_sums(CUSTOMER_ID NUMBER,SUM_ORDERS  NUMBER);  
insert into ORDERS (CUSTOMER_ID, SUM_ORDERS) values (1000, 10);
insert into ORDERS (CUSTOMER_ID, SUM_ORDERS) values (1001, 20);
insert into ORDERS (CUSTOMER_ID, SUM_ORDERS) values (1002, 30);
insert into ORDERS (CUSTOMER_ID, SUM_ORDERS) values (800, 5);
insert into ORDERS (CUSTOMER_ID, SUM_ORDERS) values (900, 6);
insert into ORDERS (CUSTOMER_ID, SUM_ORDERS) values (700, 7);
insert into ORDERS (CUSTOMER_ID, SUM_ORDERS) values (10000, 100);
insert into ORDERS (CUSTOMER_ID, SUM_ORDERS) values (20000, 200);
insert into ORDERS (CUSTOMER_ID, SUM_ORDERS) values (30000, 300);
insert into ORDER_SUMS (CUSTOMER_ID, SMALL_SUM_ORDERS, MEDIUM_SUM_ORDERS, LARGE_SUM_ORDERS) values (1000, 10, 20, 30);
insert into ORDER_SUMS (CUSTOMER_ID, SMALL_SUM_ORDERS, MEDIUM_SUM_ORDERS, LARGE_SUM_ORDERS) values (900, 1, 2, 3);
insert into ORDER_SUMS (CUSTOMER_ID, SMALL_SUM_ORDERS, MEDIUM_SUM_ORDERS, LARGE_SUM_ORDERS) values (10000, 100, 200, 300);

 

1.插入到多张表用法

insert all 
  when customer_id < 1000 then 
     into small_customers 
  when customer_id >= 1000 and customer_id < 10000 then 
     into medium_customers 
  else 
     into large_customers
  select customer_id, sum_orders from orders;

 

 

2.多列转一行用法

  insert all 
    into small_customers(customer_id, sum_orders)
      values(customer_id, small_sum_orders) 
    into small_customers(customer_id, sum_orders)
      values(customer_id, medium_sum_orders) 
    into small_customers(customer_id, sum_orders)
      values(customer_id, large_sum_orders)
    select customer_id,
           small_sum_orders,
           medium_sum_orders,
           large_sum_orders
      from order_sums;

 

分享到:
评论
1 楼 lihao312 2012-10-23  
insert all功能好强大哦 之前都没有用到过
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    oracle的列转行问题

    Oracle 列转行问题解决方案 Oracle 数据库中,列转行问题是一个非常传统的话题。在这个问题中,我们需要将行数据转换成不同的列表示,或者将不同的列数据写到同一列的不同行上。这种问题在实际应用中非常常见,如将...

    ORACLE 行列转换

    本文将详细介绍如何在Oracle中实现行转列(即行列转换的一种)以及列转行的操作,分别通过使用`decode`函数和`insert...select`语句来实现。 ### 一、使用`decode`函数进行“行转列” #### 1. **背景与需求** 在...

    Oracle SQLServer行列转换

    接下来使用`UNION ALL`将多列数据合并成单一列: - **实现列转行**: ```sql -- 示例代码 SELECT StuNo, '语文' AS Subject, Chinese AS Score FROM [StudentScores] UNION ALL SELECT StuNo, '数学' AS ...

    sql经典 oracle的查询结果的行列互换

    - **表结构**:在本示例中,我们将使用一个名为 `fzq` 的表,该表包含以下四列:`ID`、`NAME`、`KECHENG`(课程)、`CHENGJI`(成绩)。 - **目标**:我们的目标是将原始数据中的课程名称转换为列名,并将对应的成绩...

    ORACLE 合辑

    **使用方法:** - 在SQL语句中使用`:variable`的形式代替具体的值,例如:`SELECT * FROM table WHERE id = :id`。 - 在Java等编程语言中,通过PreparedStatement等API传递参数。 #### Sequence **概念及作用:** ...

    sql高级进阶

    - 多表插入语句:同时向多个表插入数据。 - 用其他表中的值更新:使用UPDATE结合JOIN。 - 合并记录:通过DELETE和INSERT实现。 - 删除违反参照完整性的记录:使用ON DELETE CASCADE。 - 删除名称重复的记录:...

    经典SQL脚本大全

    │ 列转行.sql │ 固定行列报表.sql │ 复杂交叉表.sql │ 复杂交叉表1.sql │ 多栏显示.sql │ 日期+星期+时间.sql │ 格式化报表.sql │ 横转竖-1.sql │ 横转竖-字段名.sql │ 横转竖-生成字段名.sql │ 横转竖....

    Sqlserver2000经典脚本

    │ │ └─其他 │ 交叉表--复杂名次.sql │ 交叉表-优先级处理.sql │ 交叉表分析.sql │ 分级汇总.sql │ 分组交叉表.sql │ 列转行.sql │ 固定行列报表.sql │ 复杂交叉...

Global site tag (gtag.js) - Google Analytics