本帖最后由 trubo1120 于 2011-05-26 10:36:47 编辑

解决方案 »

  1.   

    车次 日期          一等车厢              二等车厢               三等车厢 
                  餐别  价格 旅客人数    餐别   价格 旅客人数   餐别  价格  旅客人数 
    T40 4/1/11  米饭   80   30       三明治  50  70        面包  30   100 --直接在报表中拉相应的栏位,摆放到相应的位置,分组,就可以了啊
    --如果是用sql来写,没必要,而且不好管控的--给你个车厢固定的吧,不固定用过程来做。with test as(
    select '一等车厢' 车厢, 30 旅客人数, 30 价格, '米饭' 餐别, '2011-4-1' 日期, 'T40' 车次 from dual 
    union all
    select '二等车厢', 70 , 15, '三明治', '2011-4-1', 'T40' from dual 
    union all
    select '三等车厢', 100, 8,  '面包', '2011-4-1', 'T40' from dual 
    )
    SELECT 车次,日期,
           Max(Decode(车厢,'一等车厢',rpad(餐别,5,' ')||'  '||rpad(价格,5,' ')||'  '||rpad(旅客人数,5,' '))) as "一等车厢",
           Max(Decode(车厢,'二等车厢',rpad(餐别,5,' ')||'  '||rpad(价格,5,' ')||'  '||rpad(旅客人数,5,' '))) as "二等车厢",
           Max(Decode(车厢,'三等车厢',rpad(餐别,5,' ')||'  '||rpad(价格,5,' ')||'  '||rpad(旅客人数,5,' '))) as "三等车厢"
    from test
    GROUP BY 车次,日期
    UNION ALL 
    SELECT '','',
           rpad('餐别',5,' ')||'  '||rpad('价格',5,' ')||'  '||rpad('旅客人数',5,' '),
           rpad('餐别',5,' ')||'  '||rpad('价格',5,' ')||'  '||rpad('旅客人数',5,' '),
           rpad('餐别',5,' ')||'  '||rpad('价格',5,' ')||'  '||rpad('旅客人数',5,' ')
    from test
    where ROWNUM=1
    ORDER BY 1 nulls first
      

  2.   

    pady厉害,没看出来数据是这么对应字段的车次 日期     一等车厢                           二等车厢                           三等车厢
    ---- -------- ---------------------------------- ---------------------------------- ----------------------------------
                  餐别   价格   旅客                 餐别   价格   旅客                 餐别   价格   旅客
    T40  2011-4-1 米饭   30     30                   三明   15     70                   面包   8      100