源数据:
con1    con2     con3    con4      con5  
---     ---      ----     ----     -----
a b 400 500 2000使用SQL查询,得到结果 :
con1   con2      value    attribute
--     ---       ----     ----
a b 400 k
a b 500 t
a b 2000 j请问SQL怎么写,不要union类型的。

解决方案 »

  1.   

    attribute是根据con3 con4 con5来的,
    con3 -》k
    con4 -》t
    con5 -> j
      

  2.   

    SQL> with a as
      2   (select 'a' con1, 'b' con2, 400 con3, 500 con4, 2000 con5 from dual)
      3  select a.con1,
      4         a.con2,
      5         decode(b.rn,1,con3,2,con4,3,con5) value,
      6         decode(b.rn,1,'k',2,'t',3,'j') attribute
      7    from a, (select rownum rn from dual connect by rownum <= 3) b
      8  /
     
    CON1 CON2      VALUE ATTRIBUTE
    ---- ---- ---------- ---------
    a    b           400 k
    a    b           500 t
    a    b          2000 j
     
    SQL> 
      

  3.   

    oracle的写法啊
    with...as..是我构造数据用的,你只需要用最后那个sql语句就可以了
      

  4.   

    1。
    decode(b.rn,1,con3,2,con4,3,con5) value,
    decode(b.rn,1,'k',2,'t',3,'j') attribute
    2。
    select rownum rn from dual connect by rownum <= 3
    主要是这2句 :
    不理解
      

  5.   

    oracle的decode函数掌握了就能理解decode(b.rn,1,con3,2,con4,3,con5) value,
    decode(b.rn,1,'k',2,'t',3,'j') attribute
    select rownum rn from dual connect by rownum <= 3是构造三条记录确保最终有结果出来
      

  6.   

    with a as 这个用法不理解....