加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

PIVOT

发布时间:2020-12-12 15:43:23 所属栏目:MsSql教程 来源:网络整理
导读:今天有个同事,让我替他写一个SQL,将返回的行数据,拉直了,变成列来显示, 而且列的数目是不确定的。好像报表经常用到这个功能

今天有个同事,让我替他写一个SQL,将返回的行数据,拉直了,变成列来显示, 而且列的数目是不确定的。好像报表经常用到这个功能啊。

数据库是MYSQL的,不熟悉,于是花了点时间研究一下。

?

这个需求,在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;

?

?

将中间的那些××,用第一步查询的返回值代替就可以。

?

第三步: 执行。(或者在EXCEL里面设置一下,把这个sql语句存起来,由excel调用,自动生成报表。)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读