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