Welcome 微信登录

首页 / 数据库 / MySQL / 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_typeSql代码
  1. prompt PL/SQL Developer import file   
  2. prompt Created on 2012年7月5日 by jiaorg   
  3. set feedback off  
  4. set define off  
  5. prompt Creating TMP_TABLE...   
  6. create table TMP_TABLE   
  7. (   
  8.   PRO_TYPE VARCHAR2(20),   
  9.   BM_TYOE  VARCHAR2(20),   
  10.   JIAGE1   NUMBER(5),   
  11.   JIAGE2   NUMBER(5),   
  12.   JIAGE3   NUMBER(5)   
  13. )   
  14. tablespace ABRES   
  15.   pctfree 10   
  16.   initrans 1   
  17.   maxtrans 255   
  18.   storage   
  19.   (   
  20.     initial 64K   
  21.     next 1M   
  22.     minextents 1   
  23.     maxextents unlimited   
  24.   );   
  25.   
  26. prompt Disabling triggers for TMP_TABLE...   
  27. alter table TMP_TABLE disable all triggers;   
  28. prompt Deleting TMP_TABLE...   
  29. delete from TMP_TABLE;   
  30. commit;   
  31. prompt Loading TMP_TABLE...   
  32. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  33. values ("市政府""房产", 1, 2, 3);   
  34. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  35. values ("省政府""房产", 4, 3, 4);   
  36. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  37. values ("肥东""房产", 5, 4, 5);   
  38. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  39. values ("肥西""房产", 6, 5, 7);   
  40. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  41. values ("长风""房产", 7, 7, 8);   
  42. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  43. values ("淮南""房产", 8, 9, 5);   
  44. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  45. values ("市政府""汽车", 1, 2, 3);   
  46. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  47. values ("省政府""汽车", 4, 3, 4);   
  48. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  49. values ("肥东""汽车", 5, 4, 5);   
  50. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  51. values ("肥西""汽车", 6, 5, 7);   
  52. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  53. values ("长风""汽车", 7, 7, 8);   
  54. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  55. values ("淮南""汽车", 8, 9, 5);   
  56. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  57. values ("肥西""奢侈品", 6, 5, 7);   
  58. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  59. values ("长风""奢侈品", 7, 7, 8);   
  60. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  61. values ("淮南""奢侈品", 8, 9, 5);   
  62. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  63. values ("市政府""贵重首饰", 1, 2, 3);   
  64. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  65. values ("省政府""贵重首饰", 4, 3, 4);   
  66. insert into TMP_TABLE (PRO_TYPE, BM_TYOE, JIAGE1, JIAGE2, JIAGE3)   
  67. values ("肥东""贵重首饰", 5, 4, 5);   
  68. commit;   
  69. prompt 18 records loaded   
  70. prompt Enabling triggers for TMP_TABLE...   
  71. alter table TMP_TABLE enable all triggers;   
  72. set feedback on  
  73. set define on  
  74. prompt Done.  
如何个性化设置自己的sql*plus环境Oracle 10g rac升级失败如何回退?相关资讯      Oracle数据库基础教程 
  • 在Oracle数据库中插入含有&符号的  (03/06/2013 09:20:14)
  • Oracle 执行计划更改导致数据加工  (02/13/2013 14:45:04)
  • 判断Oracle Sequence是否存在  (02/13/2013 14:32:26)
  • Oracle数据库中无法对数据表进行  (02/26/2013 14:24:58)
  • Oracle 在同一台主机上建立用户管  (02/13/2013 14:40:58)
  • Oracle em 无法启动,报not found错  (02/13/2013 14:29:48)
本文评论 查看全部评论 (0)
表情: 姓名: 字数