`
jiaoronggui
  • 浏览: 1328910 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
B7c2eb31-a8ea-3973-a517-d00141f39b89
项目管理软件-redmin...
浏览量:116455
4a63e153-250f-30f6-a051-97cfc67cb3d3
IT职业规划
浏览量:199360
社区版块
存档分类
最新评论

oracle中使用decode进行数据的列转换为行的试验

阅读更多

 


 

如何将以下数据格式的数据转换为
初始化格式如下:
1    市政府    房产    1    2    3
2    省政府    房产    4    3    4
3    肥东    房产    5    4    5
4    肥西    房产    6    5    7
5    长风    房产    7    7    8
6    淮南    房产    8    9    5
7    市政府    汽车    1    2    3
8    省政府    汽车    4    3    4
9    肥东    汽车    5    4    5
10    肥西    汽车    6    5    7
11    长风    汽车    7    7    8
12    淮南    汽车    8    9    5
13    肥西    奢侈品    6    5    7
14    长风    奢侈品    7    7    8
15    淮南    奢侈品    8    9    5
16    市政府    贵重首饰    1    2    3
17    省政府    贵重首饰    4    3    4
18    肥东    贵重首饰    5    4    5

需要转变为

                        房产                    汽车                    奢侈品                    奢侈品        
       PRO_TYPE    场次    销售价    佣金    场次    销售价    佣金    场次    销售价    佣金    场次    销售价    佣金
1    淮南        8        9        5        8        9        5        8        9        5            
2    肥东        5        4        5        5        4        5                                5        4        5
3    市政府        1        2        3        1        2        3                                1        2        3
4    省政府        4        3        4        4        3        4                                4        3        4
5    肥西        6        5        7        6        5        7        6        5        7            
6    长风        7        7        8        7        7        8        7        7        8            


处理sql语句如下:
select pro_type,
       sum(decode(bm_tyoe, '房产', jiage1)) 房产场次,
       sum(decode(bm_tyoe, '房产', jiage2)) 房产销售价,
       sum(decode(bm_tyoe, '房产', jiage3)) 房产佣金,
       sum(decode(bm_tyoe, '汽车', jiage1)) 汽车场次,
       sum(decode(bm_tyoe, '汽车', jiage2)) 房产销售价,
       sum(decode(bm_tyoe, '汽车', jiage3)) 汽车佣金,
       sum(decode(bm_tyoe, '奢侈品', jiage1)) 奢侈品场次,
       sum(decode(bm_tyoe, '奢侈品', jiage2)) 奢侈品销售价,
       sum(decode(bm_tyoe, '奢侈品', jiage3)) 奢侈品佣金,
       sum(decode(bm_tyoe, '贵重首饰', jiage1)) 贵重首饰场次,
       sum(decode(bm_tyoe, '贵重首饰', jiage2)) 贵重首饰销售价,
       sum(decode(bm_tyoe, '贵重首饰', jiage3)) 贵重首饰佣金
  from tmp_table
 group by pro_type

 

 

prompt PL/SQL Developer import file
prompt Created on 2012年7月5日 by jiaorg
set feedback off
set define off
prompt Creating TMP_TABLE...
create table TMP_TABLE
(
  PRO_TYPE VARCHAR2(20),
  BM_TYOE  VARCHAR2(20),
  JIAGE1   NUMBER(5),
  JIAGE2   NUMBER(5),
  JIAGE3   NUMBER(5)
)
tablespace ABRES
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );

prompt Disabling triggers for TMP_TABLE...
alter table TMP_TABLE disable all triggers;
prompt Deleting TMP_TABLE...
delete from TMP_TABLE;
commit;
prompt Loading TMP_TABLE...
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('市政府', '房产', 1, 2, 3);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('省政府', '房产', 4, 3, 4);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('肥东', '房产', 5, 4, 5);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('肥西', '房产', 6, 5, 7);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('长风', '房产', 7, 7, 8);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('淮南', '房产', 8, 9, 5);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('市政府', '汽车', 1, 2, 3);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('省政府', '汽车', 4, 3, 4);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('肥东', '汽车', 5, 4, 5);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('肥西', '汽车', 6, 5, 7);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('长风', '汽车', 7, 7, 8);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('淮南', '汽车', 8, 9, 5);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('肥西', '奢侈品', 6, 5, 7);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('长风', '奢侈品', 7, 7, 8);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('淮南', '奢侈品', 8, 9, 5);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('市政府', '贵重首饰', 1, 2, 3);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('省政府', '贵重首饰', 4, 3, 4);
insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)
values ('肥东', '贵重首饰', 5, 4, 5);
commit;
prompt 18 records loaded
prompt Enabling triggers for TMP_TABLE...
alter table TMP_TABLE enable all triggers;
set feedback on
set define on
prompt Done.
 
1
4
分享到:
评论

相关推荐

    ORACLE 列转行 DECODE函数用法

    DECODE函数在处理列转行的问题时,尤其适用于将多列数据合并到一行中,使得数据展示更加简洁明了。下面我们将详细讲解DECODE函数的使用方法以及如何在列转行操作中应用它。 DECODE函数的基本语法如下: ```sql ...

    oracle动态行转列

    然后,动态构建SQL语句,对于每个不同的日期,使用`DECODE`函数将行数据转换为指定列的数据。最后,执行`EXECUTE IMMEDIATE V_SQL`来创建一个视图`RESULT`,该视图包含了转换后的数据集。 #### 3. DECODE函数的作用...

    Oracle中Decode()函数使用技巧

    Oracle中的Decode()函数是数据库查询时非常实用的一个工具,它允许你在SQL语句中实现简单的条件判断,类似于IF-THEN-ELSE逻辑。这个函数在处理数据时提供了灵活性,避免了复杂的CASE语句,使得代码更加简洁易读。...

    关于oracle decode函数的用法

    在商品销售表`sale`的转化示例中,使用了DECODE函数来将每月的销售数据从行转为列,形成年份为行,各月销售金额为列的新结构。例如,为了计算每年1月的销售总额,使用了`SUM(DECODE(SUBSTRB(month,5,2),'01',sell,0)...

    oracle数据行列转换

    在Oracle数据库中,数据的行列转换是数据处理过程中的常见操作,尤其在数据分析、报表制作以及数据展示时显得尤为重要。本篇文章将详细讲解Oracle 10g中的行列转换技术,包括如何实现行转列和列转行。 首先,我们要...

    oracle行转列oracle行转列

    在Oracle数据库中,将行数据转换为列数据是一种常见的数据操作需求,特别是在处理报表或进行数据分析时。这种操作通常被称为“行转列”,其目的是为了更直观地展示数据或者满足某些特定的数据分析需求。在提供的文件...

    Oracle中Decode()函数的有关用法

    ### Oracle中Decode()函数的有关用法 #### 一、Decode()函数简介 在Oracle数据库中,`DECODE()`函数是一种非常实用的功能,主要用于条件判断并返回特定的值。它提供了一种简单的方法来实现多分支逻辑判断,尤其是...

    Oracle行转列

    Oracle行转列是指在Oracle数据库中将行数据转换为列数据或将列数据转换为行数据的操作。这种操作在实际应用中非常有用,例如,在数据报表、数据分析和数据挖掘等领域都需要使用行转列操作。 1. 列转行 列转行是指...

    oracle行转列较精典的解决方案

    在Oracle数据库管理与开发过程中,经常会遇到需要将数据表中的行数据转换为列数据的情况,这种操作被称为“行转列”或者“行列转换”。行列转换是数据分析、报表生成等场景中非常常见的需求之一。本文将详细介绍几种...

    oracle_function_decode.patch

    博客:PostgreSQL的学习心得和知识总结(四十四)|语法级自上而下完美实现Oracle数据库DECODE函数的实现方案(GreenPlum & AntDB)

    oracle 行转列

    其中,“行转列”是一种常见的数据处理方式,它指的是将原本存储在多行中的数据转化为单行中的多个字段。这种数据转换方式在报表生成、数据分析等领域非常有用。 #### 二、固定列数的行转列方法 当待转换的列是...

    oracle行列转换例子

    在Oracle数据库中,行列转换是一种常见的数据操作需求,主要用于将数据从行的形式转换为列的形式,或者反之。这种转换在数据分析、报表制作等场景中尤为常见。本文将深入解析一个Oracle行列转换的例子,通过详细解释...

    oracle行列转换

    Oracle 行列转换是指将数据库表中的行转换为列或将列转换为行的一种操作。这种操作在实际应用中非常有用,例如在数据报表生成、数据分析和数据挖掘等领域。下面我们将详细介绍 Oracle 行列转换的六种情况。 一、列...

    oracle行列转换总结

    除了将列转换为行,Oracle还支持将行转换为列。这通常通过聚合函数如`MAX`、`SUM`、`MIN`、`AVG`等结合`DECODE`函数实现。例如,假设我们想要创建一个新的表`t_row_col`,其中每列代表原始表的一行数据,可以先使用`...

    oracle sql 行列转换

    在Oracle SQL中,行列转换是一种常见的数据操作需求,主要用于将数据表中的行转换为列,或将列转换为行,以此来满足不同的数据展示或分析需求。这种转换在处理多维度数据、汇总数据或是进行复杂查询时特别有用。下面...

    oracle中nvl、decode、trim、rtrim的常见用法

    ### Oracle中NVL、DECODE、TRIM、RTRIM的常见用法 #### NVL函数 在Oracle数据库中,NVL函数是一个非常实用的功能,主要用于处理NULL值。其基本语法如下: ``` NVL(expression1, expression2) ``` 其中: - `...

    ORACLE 行列转换

    - 使用`insert...select`语句从`score_2`中读取数据,并将其转换为行格式,即将每门科目的成绩从列中提取出来,形成新的一行。 #### 3. **SQL示例代码** ```sql INSERT INTO score (id, student_name, subject, ...

Global site tag (gtag.js) - Google Analytics