今天有个同事,让我替他写一个sql,将返回的行数据,拉直了,变成列来显示, 而且列的数目是不确定的。好像报表经常用到这个功能啊。
这个需求,在sqlSERVER里面有个PIVOT函数,在ORACLE11g中,也加了这个。
因为不知道MYSQ L的匿名块怎么写,语法也不熟悉,就分步执行了。
第一步: 找出有哪些列需要显示。
select concat(' round(num(case when cps=',c.cps,' then aa.SuccessRate else null end),4) cps',',') newcol from (select distinct b.cps from table_a b where b.TASNum = 2) c order by c.cps;
第二步: 拼装出完整的sql语句。
select
aa.version,
round(num (case when cps=10 then aa.SuccessRate else null end),4) cps10,
*
*
*
from (select Concat(Concat(a.Version,' '),a.Comments) Version,a.cps cps,a.SuccessRate SuccessRate
from table_a a
where a.TASNum = 2
order by version,cps) aa
group by aa.Version;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。