我有如下一张表A,字段包括 month_id(账期),prov_desc(省份),innet_user(网上用户数),dev_user(新增用户数)四个字段,
如果我可以通过一张码表得到如下信息:北京、天津、山西、辽宁、黑龙江、吉林为北方省份,其余省份为南方省份,我能否通过一个脚本得到如下信息:
month_id  prov_desc   innet_user  dev_user
201101     北京          XX          XX
201101     天津          XX          XX
201101     北方省分      XX          XX
201101     全国          XX          XXunion all除外,谢谢。其实就是想问下,对于一个字段维度互相包括的情况,出了union all,还是否有别的方式可以实现。

解决方案 »

  1.   

    group by rollupgroup by grouping sets
      

  2.   

    实测数据:CREATE TABLE T147
    (
        month_id VARCHAR2(20),
        prov_desc VARCHAR2(20),
        innet_user NUMBER(4),
        dev_user NUMBER(4)
    );INSERT INTO T147 VALUES('201101', '北京', 1, 1);
    INSERT INTO T147 VALUES('201101', '天津', 10, 10);
    INSERT INTO T147 VALUES('201101', '成都', 100, 100);
    INSERT INTO T147 VALUES('201101', '洛阳', 1000, 1000);
    -- 省份码表
    CREATE TABLE T148
    (
        ID NUMBER(4),
        NAME VARCHAR2(20),
        Flag NUMBER(1)    -- 0,北方;1,南方
    );INSERT INTO T148 VALUES(1, '北京', 0);
    INSERT INTO T148 VALUES(2, '天津', 0);
    INSERT INTO T148 VALUES(3, '吉林', 0);
    INSERT INTO T148 VALUES(4, '成都', 1);
    INSERT INTO T148 VALUES(5, '洛阳', 1);
    INSERT INTO T148 VALUES(6, '广州', 1);
    实测结果: