现在实现了行列转换,但碰到一个麻烦的问题,我之前取得表是sql语句得到的,并不是单纯的从一个表里取值得到的
   sql2=select GJZQSJ,LBNAME,count(LBNAME) as ITEM from GJJG  where NAME='LZ' and GJZQ='月检' and    GJZQSJ   between '01月' and '10月' group by GJZQSJ,LBNAME
   DataSet ds2 = obj2.BF_GetTableDs(sql2);
   DataTable dt2 = ds2.Tables[0];  
我现在想将这个表dt2进行行列转换
  create or replace procedure row_to_col(tabname in varchar2,
                                  group_col in varchar2,
                                  column_col in varchar2,
                                  value_col in varchar2,
                                  Aggregate_func in varchar2 default 'max',
                                  colorder in varchar2 default null,
                                  roworder in varchar2 default null,
                                  when_value_null in varchar2 default null,
                                  p_curResult          out Report_Package.t_cursor)
这里的tabname是varchar类型,而且oracle也没有table类型
请各位高手帮帮我,谢谢啦!
 
   

解决方案 »

  1.   

    其实你只需在存储过程中,行转列就行了。你的意思 是写一个万能的行转列存储过程吗?
    这个具体情况分析
    原理是一样的!
    如下
    declare @sql varchar(8000)
    set @sql='select GJZQSJ,LBNAME,count(LBNAME) as ITEM'
    select @sql=@sql+',max(case GJZQSJ  when N'''+GJZQSJ+''' else '''' end)['+GJZQSJ+']'
     from (select distinct GJZQSJ from  GJJG NAME=''LZ'' and GJZQ=''月检'' and GJZQSJ between ''01月'' and ''10月'') a
    set @sql+@sql+'  from GJJG where NAME=''LZ'' and GJZQ=''月检'' and GJZQSJ between ''01月'' and ''10月'' group by GJZQSJ,LBNAME'
    exec(@sql)
      

  2.   

    行列转换跟
    oracle也没有table类型有什么关系