简体 | 繁體 | English | 网站地图
   
当前位置: 首页  >  审计之窗  >  综合论坛 > 正文
 
将数据表的列转为行的技术方法
柯锐(湖北省红安县审计局)
 
【时间:2013年04月27日】 字号: 【大】 【中】 【小】
    在日常审计工作经常遇到各种各样类型的数据表,由于必须达到规范化的要求,需要将数据表的列转为行,下面借助一个实例从多个角度实现这项技术方法,实例数据表的内容如下:
    
          
    方法一:使用union all
    
    方法二:假设有张表只有一列LEL,保存1-10自然数列,可用下列方法生成:
    CREATE TABLE SEQ
    AS
      SELECT LEVEL LEL
        FROM DUAL
     CONNECT BY LEVEL <= 10;
    
    然后用下列方法:
    WITH INFO
    AS
     ( 
       SELECT CUST_NAME,
    "2009-08-01",
             "2009-08-02",
             "2009-08-03",
             LEL
        FROM  orders_pivot,SEQ
       WHERE LEL <= 3
       ORDER BY CUST_NAME,LEL
     )
     SELECT i.CUST_NAME,
            CASE LEL
               WHEN 1 THEN DATE'2009-08-01'
               WHEN 2 THEN DATE'2009-08-02'
               WHEN 3 THEN DATE'2009-08-03'
            END ORDER_DATE,
           CASE LEL
               WHEN 1 THEN "2009-08-01"
               WHEN 2 THEN "2009-08-02"
               WHEN 3 THEN "2009-08-03"
            END AR
       FROM INFO I
      WHERE  CASE LEL
               WHEN 1 THEN "2009-08-01"
               WHEN 2 THEN "2009-08-02"
               WHEN 3 THEN "2009-08-03"
             END IS NOT NULL;
    结果如下图:
    
    方法三:使用unpivot实现列转行
    
    (柯锐)
【关闭】    【打印】
 
管理员信箱 | 版权信息
主办单位:中华人民共和国审计署办公厅  技术支持:审计署计算机技术中心 网站电话:010-62150912\0929\0990  
地址:北京市丰台区金中都南街17号(邮编:100073) 备案编号:京ICP备19011981号  建议使用分辨率:1024×768