原表数据 (T1 是表面)事业部 品项 商超 餐饮 团购 二批
高端酒 10年 是 是 否 否
高端酒 15年 是 否 否 是
低端酒 2年 是 否 是 否要转换成 (要求建立视图)
事业部 品项 渠道
高端酒 10年 商超
高端酒 10年 餐饮
高端酒 15年 商超
高端酒 15年 二批
低端酒 2年 商超
低端酒 2年 团购

解决方案 »

  1.   

    select "事业部", "品项", '商超' as "渠道"  from t1 where "商超"='是'
    union all
    select "事业部", "品项", '餐饮' as "渠道"  from t1 where "餐饮"='是'
    union all
    select "事业部", "品项", '团购' as "渠道"  from t1 where "团购"='是'
    union all
    select "事业部", "品项", '二批' as "渠道"  from t1 where "二批"='是';
      

  2.   

    WITH tab AS(    
    SELECT '高端酒' 事业部, '10年' 品项, '是' 商超, '是' 餐饮, '否' 团购, '否' 二批 FROM dual 
    UNION ALL 
    SELECT '高端酒', '15年', '是', '否', '否', '是' FROM dual
    UNION ALL 
    SELECT '低端酒', '2年', '是', '否', '是', '否' FROM dual
    )
    SELECT 事业部,品项,'商超' 渠道 FROM tab WHERE 商超='是' 
    UNION ALL 
    SELECT 事业部,品项,'餐饮' 渠道 FROM tab WHERE 餐饮='是' 
    UNION ALL 
    SELECT 事业部,品项,'团购' 渠道 FROM tab WHERE 团购='是'
    UNION ALL 
    SELECT 事业部,品项,'二批' 渠道 FROM tab WHERE 二批='是'
    ORDER BY 1 DESC 
    --
    事业部  品项  渠道
    ---------------------
    高端酒  10年  商超
    高端酒  15年  商超
    高端酒  10年  餐饮
    高端酒  15年  二批
    低端酒  2年   商超
    低端酒  2年   团购
      

  3.   


    WITH tb AS(    
    SELECT '高端酒' 事业部, '10年' 品项, '是' 商超, '是' 餐饮, '否' 团购, '否' 二批 FROM dual 
    UNION ALL 
    SELECT '高端酒', '15年', '是', '否', '否', '是' FROM dual
    UNION ALL 
    SELECT '低端酒', '2年', '是', '否', '是', '否' FROM dual
    )
    select * from 
    (select 事业部,品项,decode(商超,'是','商超','未知') 渠道 from tb 
    union all
    select 事业部,品项,decode(餐饮,'是','餐饮','未知') 渠道 from tb 
    union all
    select 事业部,品项,decode(团购,'是','团购','未知') 渠道 from tb
    union all
    select 事业部,品项,decode(二批,'是','二批','未知') 渠道 from tb)
    order by 事业部,decode(渠道,'未知',1,0)--结果
    1 低端酒 2年 团购
    2 低端酒 2年 商超
    3 低端酒 2年 未知
    4 低端酒 2年 未知
    5 高端酒 15年 二批
    6 高端酒 10年 商超
    7 高端酒 10年 餐饮
    8 高端酒 15年 商超
    9 高端酒 15年 未知
    10 高端酒 10年 未知
    11 高端酒 15年 未知
    12 高端酒 10年 未知
      

  4.   

    select '' union all select 
      

  5.   

    select tb.事业部,
           tb.品项,
           decode(tb.商超, '是', '商超') 渠道
      from tb 
      where tb.商超='是'
      union  all
    select tb.事业部,
           tb.品项,
           decode(tb.餐饮, '是', '餐饮')  渠道
      from tb  
      where tb.餐饮='是' 
      union  all
    select tb.事业部,
           tb.品项,
           decode(tb.团购, '是', '团购')  渠道
      from tb  
      where tb.团购='是'  
      union  all
    select tb.事业部,
           tb.品项,
           decode(tb.二批, '是', '二批') 渠道
      from tb  
      where tb.二批='是'