Excel中怎么实现动态行转列

66次阅读
没有评论

共计 3019 个字符,预计需要花费 8 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 Excel 中怎么实现动态行转列,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

查询的 SQL 如下
ol start= 1 >

select type,ts,cn,as DECIMAL) val from ( 

select 

starttime, 发布  type,base.ts,base.cn,ifnull(t1.val,0) val 

from 

 select 

 t1.*, 

 startdate+ interval id-1 hour starttime, 

 startdate+ interval id hour endtime, 

 date_format(startdate+ interval id-1 hour, %m%d%H) ts, 

 vars.* 

 from nums ,(select ${starttime} startdate,${endtime} enddate) vars, 

 ( 

 select  mvbox_user.user_otherinfo  busidatatype,1 type, 内容审核. 个人资料  cn union all 

 select  mvbox_user.user_baseinfo ,1, 内容审核. 个人喜好  union all 

 select  photo_album ,1, 内容审核. 相册信息  union all 

 select  photo_list ,1, 内容审核. 图片信息  union all 

 select  music_original ,1, 内容审核. 原唱信息  union all 

 select  music_cover ,1, 内容审核. 翻唱信息  union all 

 select  music_accompany ,1, 内容审核. 伴奏信息  union all 

 select  music_album ,1, 内容审核. 音乐专辑  union all 

 select  music_video ,1, 内容审核. 视频信息  union all 

 select  blog_album ,1, 内容审核. 日志与文章  union all 

 select  mvbox_user.user_baseinfo ,2, 内容审核.MVBOX 头像审核  

 ) t1 

 where id = TIMESTAMPDIFF(hour,startdate,enddate) 

 order by busidatatype,type,starttime 

) base join 

 select busidatatype,type,date_format(createtime, %m%d%H) ts,from audit_obj_detail 

 where createtime =${starttime} and createtime ${endtime} 

 and busitype =  mvbox  

 group by busidatatype,type,date_format(createtime, %m%d%H) 

) t1 on (base.busidatatype=t1.busidatatype and base.type=t1.type and base.ts=t1.ts) 

group by base.busidatatype,base.type,base.ts,base.cn 

union all 

select 

starttime,  审核  type,base.ts,base.cn,ifnull(t1.val,0) val 

from 

 select 

 t1.*, 

 startdate+ interval id-1 hour starttime, 

 startdate+ interval id hour endtime, 

 date_format(startdate+ interval id-1 hour, %m%d%H) ts, 

 vars.* 

 from nums ,(select ${starttime} startdate,${endtime} enddate) vars, 

 ( 

 select  mvbox_user.user_otherinfo  busidatatype,1 type, 内容审核. 个人资料  cn union all 

 select  mvbox_user.user_baseinfo ,1, 内容审核. 个人喜好  union all 

 select  photo_album ,1, 内容审核. 相册信息  union all 

 select  photo_list ,1, 内容审核. 图片信息  union all 

 select  music_original ,1, 内容审核. 原唱信息  union all 

 select  music_cover ,1, 内容审核. 翻唱信息  union all 

 select  music_accompany ,1, 内容审核. 伴奏信息  union all 

 select  music_album ,1, 内容审核. 音乐专辑  union all 

 select  music_video ,1, 内容审核. 视频信息  union all 

 select  blog_album ,1, 内容审核. 日志与文章  union all 

 select  mvbox_user.user_baseinfo ,2, 内容审核.MVBOX 头像审核  

 ) t1 

 where id = TIMESTAMPDIFF(hour,startdate,enddate) 

 order by busidatatype,type,starttime 

) base join 

 select busidatatype,type,date_format(AuditTime, %m%d%H) ts,from audit_obj_detail 

 where AuditTime =${starttime} and AuditTime ${endtime} 

 and busitype =  mvbox  

 group by busidatatype,type,date_format(AuditTime, %m%d%H) 

) t1 on (base.busidatatype=t1.busidatatype and base.type=t1.type and base.ts=t1.ts) 

group by base.busidatatype,base.type,base.ts,base.cn 

) t1 ; 

由于这个 SQL 已然比较复杂,再加动态行转列, 可读性几乎就没有了.

这个 SQL 查询的结果大致如下。

其中 type 可能是发布或者审核.

ts 表示月 日 和小时

cn 表示模块类型

val 表示数量.

将这个结果导入至 Excel

选择插入, 数据透视表

然后将 ts 设置为列标签, 这样 ts 就由行变成列显示

cn 和 type 作为行标签.

val 作为显示数值

然后选择视图 - 冻结窗格 - 冻结首列   方便观看数据

可以看到如下结果

完全符合动态行转列的需求, 并且可以排序和筛选. 太强大了.

关于 Excel 中怎么实现动态行转列就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计3019字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)