sql实现纵表变横表
Posted 拄杖盲学轻声码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的倒数第二个数字为组进行分组即可。
以上是关于sql实现纵表变横表的主要内容,如果未能解决你的问题,请参考以下文章