其实列转行,可以在数据库当中转换,也可以在程序中进行转换,因为我这个设计多张表所以在程序当中进行转换,在nosql非关系型数据库当中,可以把行转列看成一个矩阵,这个矩阵的列可以进行90度的转换,在非关系型数据库当中,这样做会很简单,但是在关系型数据库当中这样做就很复杂了。
我说一下,我的java代码的实现,前提我手上有三张表分别为:
T50_ETL_REPORT; // 指标中间表
T00_INDIC_DICT; //指标表
T00_ORGAN //机构表
我先说一下这三张表的关系:
指标中间表包括指标表里面的指标key和机构key
每个机构下面包含很多个指标,每个指标下面包含我们要的业务值;
好吧,接下来我使用map和list来做的,首先map的key是不允许重复的所以导致可以区分每个orgId,产生唯一性。
1、我先根据页面的筛选条件来找到orgList和指标keyList;
2、然后遍历orgList 下面套了一层keyList循环,根据指标key和orgId和日期来唯一确定一个,我所需要的valueList;
3、如果valueList不为空则创建一个mapval把指标key作为key,valueList作为list存到mapval当中,然后创建一个contendList把map存到list中;
4、如果contendList不为空则创建一个mapOrg 然后把orgId作为key,contendList作为value;
5、然后创建一个mapAllList把我们mapOrg 放到list中然后给前端;
6 .然后前端依据orgId和指标key来进行遍历匹配找到我们想要的value;
根据思路就可以写出代码了,加油