一select语句,最后的显示结果是a,b,c想显示成纵列
a
b
c怎么做啊?谢谢

解决方案 »

  1.   

    with abc as (select 'a' a,'b' b,'c' c from dual)
    select decode(a, 'a', a) result
      from abc
    union all
    select decode(b, 'b', b)
      from abc
    union all
    select decode(c, 'c', c) from abc
      

  2.   

    SELECT DECODE(INSTR('a,b,c,', ','),
                  0,
                  'a,b,c,',
                  SUBSTR('a,b,c,',
                         DECODE(ROWNUM,
                                1,
                                1,
                                INSTR('a,b,c,', ',', 1, ROWNUM - 1) + 1),
                         DECODE(ROWNUM,
                                1,
                                INSTR('a,b,c,', ',', 1, ROWNUM) - 1,
                                (INSTR('a,b,c,', ',', 1, ROWNUM) -
                                INSTR('a,b,c,', ',', 1, ROWNUM - 1) - 1)))) SSS
      FROM DUAL
    CONNECT BY ROWNUM <=
               LENGTH('a,b,c,') - LENGTH(REPLACE('a,b,c,', ',', ''));
      

  3.   

    这是单纯一行的做法
    多行的话可就麻烦了
    建议你搜一下oracle行列转换
      

  4.   

    SQL> SELECT 'A' FROM DUAL UNION SELECT 'B' FROM DUAL UNION SELECT 'C' FROM DUAL;'
    -
    A
    B
    CSQL>