请教高手(oracle 9i)
表1:投资类型表(部分数据)
 tradeId    tradeName     parentTradeId
  01        交易性金融资产              
  0101        股票              01
  0102        基金              01表2:证券库存表(部分数据)
  tradeId     productId        productName        kcNum
   0101          a01             工商银行            1000
   0102          a02             广发聚丰            2000现需要生成如下样式的报表:
   品种              库存数量
---------------------------
 交易性金融资产        3000
   股票               1000
     工商银行         1000
   基金               2000
     广发聚丰         2000注:用函数返回结果集已经实现,但我现在希望能用一张视图解决,谢谢各位帮忙

解决方案 »

  1.   


    create table trade_type
    (
     trade_id varchar2(20) 
      constraint pk_trade_type primary key
    ,trade_name varchar2(200)
    ,parent_id varchar2(20)
    )create table stock
    (
     product_id varchar2(20)
    ,product_name varchar2(100)
    ,stock_count number
    ,trade_id varchar2(20)
    ,constraint fk_stock_trade_id foreign key(trade_id) references trade_type(trade_id)
    )insert into trade_type values('01', '交易性金融资产', NULL);
    insert into trade_type values('0101', '股票', '01');
    insert into trade_type values('0102', '基金', '01');insert into stock values('a01', '工商银行', 1000, '0101');
    insert into stock values('a01', '建议银行', 1500, '0101');insert into stock values('a02', '广发聚丰', 2000, '0102');
    insert into stock values('a02', '友绑华泰', 2000, '0102');
      

  2.   


    select trade_name, stock_count
    from 
    (
     select A.trade_id, A.trade_name trade_name, (select sum(stock_count) from stock where trade_id like A.trade_id || '%') stock_count
      from trade_type A
     start with A.parent_id IS NULL
     connect by prior A.trade_id = A.parent_idunion allselect trade_id, product_name, stock_count
      from stock A
      )
    order by trade_id
      

  3.   

    有点遗憾,trade_name 并没有用空格来区分级别。这个作业就交楼主完成了