sql实现纵表变横表


网上所有的纵横表转换都是千篇一律的,参考价值都不大,而且只适合那种数据量固定的学生成绩表的横纵转化,但是当真正遇到大数据量的批量转换的时候是行不通的,下面介绍一种相对灵活的大量数据的横纵表转换:

表结构:

如上图所示,其中index_id中以0结尾的表示的是服务名,以1结尾的表示设备rac名称,2结尾的表示的是设备状态。

下面我们需要将一组0,1,2结尾的分别展示成以服务名,设备rac名称,设备状态为表头的一行数据,多组0,1,2结尾的展示成多行数据。

Sql执行如下:

select index_id/10 as nmm,   max(case mod(index_id,10)  when 0 then mon_indexdata.value else '' end) cluster_name,

max(case mod(index_id,10) when 1 then  mon_indexdata.value else '' end) sys_name,

max(case mod(index_id,10) when 2 then mon_indexdata.value else '' end) state

from mon_indexdata where uid = '110100224' and index_id>3010000 group by index_id/10

主要规律是通过对10取余和以inde_id的倒数第二个数字为组进行分组即可。

优质内容筛选与推荐>>
1、UDP端口启动后一段时间无法接收到数据
2、javaweb之验证码
3、[luogu4728 HNOI2009] 双递增序列 (dp)
4、iOS二次发育(swift)类
5、[Swift]LeetCode507. 完美数 | Perfect Number


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号