Ticket(票据表)
IdTicket(票号)
TicketType(票的种类)
Customer(客户)
WriteDate(开票日期)item(收费项目表)
Id(收费项目编号)
name(收费项目名称)money(收费金额表)
IdTicket(票号)
name(收费项目)
unit(金额单位)
Amount(数量)
Money(总额) 因为收费项目有50多个,但并不是每种票据都有这么多收费项目,一般一种票据也就只有45种收费项目. Ticket为票据表也就是一张主表,是一些票据共有的基本信息,item是全部的收费项目,有50多种,也就是50多条记录,money就是一个细表,票据表的某条票据记录有几个收费项目,这个表就会有该条记录的几个收费项目的记录现在要做一张报表,报表要列出所有的收费项目,票据号     客户      收费项目1     收费项目2   ...... 收费项目 8 ......   收费项目N
00001     **公司       100                               200   412
我要怎样查出这样的记录呢?

解决方案 »

  1.   

    建议用存储过程,
    1,创建临时表
    2,用游标访问money的第条数据,修改临时表的数据
      

  2.   

    select IdTicket,unit, SUM(decode(rn,1,name)) 项目1, decode(rn,2,name) 项目2 ,decode(rn,3,name) 项目3 ...
    from 
    (select IdTicket,unit,row_number()over(partition by IdTicket order by  name) as rn
    from TS

    GROUP BY IdTicket
      

  3.   

    不行,说无效列名
    decode(rn,3,name) 
    说name无效