现在实现了行列转换,但碰到一个麻烦的问题,我之前取得表是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类型
请各位高手帮帮我,谢谢啦!
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类型
请各位高手帮帮我,谢谢啦!
这个具体情况分析
原理是一样的!
如下
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)
oracle也没有table类型有什么关系