请问如何用一条sql语句将多行记录转为一行记录显示啊?其中日期相同,但每条记录的参数值不同,如下:
 table a :    riqi        paraname   para1       para2
           2005-10-26      车间1     800.5       900
           2005-10-26      车间2     345         678
想把他转成如下显示:
         riqi      paraname1  p1_para1   p1_para2   paraname2   p2_para1    p2_para2 
       2005-10-26   车间1     800.5       900       车间2         345          678

解决方案 »

  1.   

    如果仅仅是两行数据要这样处理还是比较现实的,多了或者不定有多少行就没有什么参考价值了。create view v_a as 
      select c.riqi, 
             c.paraname, 
             c.para1,
             c.para2,
             isnull(d.paraname,'') paraname2, 
             isnull(d.para1,'') para12,
             isnull(d.para2,'') para22
      from a c, a d
      where c.rownum=1
            and d.paraname =c.paraname 
            and d.paraname<>c.paraname
            and d.rownum=1/select * from v_a
    Oracle 已经有年头没有用了,不知道对否?
      

  2.   

    just tyr this function: lead()over()
    such as :
    SQL> select * from test_tab;ID NAME
    -- --------------------
     1 A1
     2 ABSQL> select id as id1,name as name1,lead(id,1)over(order by id) as id2,lead(name,1)over(order by id) as name2 from test_tab;ID1 NAME1                       ID2 NAME2
    --- -------------------- ---------- --------------------
      1 A1                            2 AB
      2 AB                              
      

  3.   

    没有说清楚:多行记录什么样的表示出来?是这样吗?
     riqi      paraname1  p1_para1   p1_para2   paraname2   p2_para1    p2_para2 paraname3   p2_para3    p2_para3 。
    如果是这样就不好办了
      

  4.   

    可能要用到游标了,如果是车间多了,超出了oracle列的数目限制,就更不好办了