解决方案 »

  1.   

    with t as
     (select 1 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
        from dual
      union all
      select 2 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
        from dual)
    select decode(flag, 1, a, b), decode(flag, 1, c, d), decode(flag, 1, e, f)
      from t;
      

  2.   

    with t as
     (select 1 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
        from dual
      union all
      select 2 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
        from dual)
    select decode(flag, 1, a, b), decode(flag, 1, c, d), decode(flag, 1, e, f)
      from t;
    这么搞太复杂了,还是老实写两条查询吧
      

  3.   


    WITH T AS
     (SELECT 1 FLAG, 1 A, 2 B, 3 C, 4 D, 5 E, 6 F
        FROM DUAL
      UNION ALL
      SELECT 2 FLAG, 1 A, 2 B, 3 C, 4 D, 5 E, 6 F FROM DUAL)
    SELECT A, B, C, NULL D, NULL E, NULL F
      FROM T
     WHERE FLAG = 1
    UNION
    SELECT NULL A, NULL B, NULL C, D, E, F FROM T WHERE FLAG <> 1;
      

  4.   

    with t as
     (select 1 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
        from dual
      union all
      select 2 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
        from dual)
    select decode(flag, 1, a, b), decode(flag, 1, c, d), decode(flag, 1, e, f)
      from t;
    这么搞太复杂了,还是老实写两条查询吧with t as
     (select 1 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
        from dual
      union all
      select 2 flag, 1 a, 2 b, 3 c, 4 d, 5 e, 6 f
        from dual)
    这部分时测试数据,你不用管,
    这个才是你要用的SQL:
    select decode(flag, 1, a, b), decode(flag, 1, c, d), decode(flag, 1, e, f)
      from t;
      

  5.   

    ++
    楼主,union all还是真真极好的。