jaydom 2013年08月08日
如何用mysql语言实现动态的行转列
下面是在oracle下实现的一个函数,求大牛帮转成mysql的

CREATE OR REPLACE FUNCTION ROW_TO_COL_FUNC (tabname in varchar2,
v_xmbh in varchar2,
v_dwbh in varchar2,
v_lrsj_begin in varchar2 default to_char( Trunc(sysdate,'month'),'yyyy-mm-dd'),
v_lrsj_end in varchar2 default to_char(sysdate,'yyyy-mm-dd')

)return varchar2
Authid Current_User
as
sqlstr varchar2(2000):='select AAB034,AA011,AA001,AAB001,';
ub sys_refcursor;
tab varchar2(100);
vardate varchar2(20):='yyyy-mm-dd';


begin
open ub for 'select distinct AA014 from '||tabname||' where AA011='''||v_xmbh||''' and AAB001= '''||v_dwbh||'''';
loop
fetch ub into tab;
exit when ub%notfound;
sqlstr:=sqlstr||',max(case when AA014='''||tab||''' then AA015 else '''||''' end) '||tab;
end loop ;
close ub;
sqlstr :=sqlstr||',AAE216,AAE218,AA013,AA016 from '||tabname||' where to_char(AAE216,'''||vardate||''') between '''||v_lrsj_begin||''' and '''||v_lrsj_end||''' and AA011='''||v_xmbh||''' and AAB001='''||v_dwbh||''' group by AAB034,AA011,AA001,AAB001,AAE216,AAE218,AA013,AA016';
return sqlstr;
end row_to_col_func;
...全文
397 点赞 收藏 5
写回复
5 条回复

还没有回复,快来抢沙发~

发动态
发帖子
MySQL
创建于2007-09-28

2.4w+

社区成员

5.5w+

社区内容

MySQL相关内容讨论专区
社区公告
暂无公告