千家信息网

Excel中怎么实现动态行转列

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章将为大家详细讲解有关Excel中怎么实现动态行转列,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。查询的SQL如下select type,ts,
千家信息网最后更新 2025年11月07日Excel中怎么实现动态行转列

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


查询的SQL如下

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

0