Oracle实现行转列+Mybatis
1.需求
报表需要动态展示某几个公司分别在几个月内销售额情况(前端表头月份是动态的,月时间段是前端参数来选择的,最大为12个月),
页面展示如下
Oracle数据库中数据如下:
可以看到一个公司的月份数据是行的,现在要转成列
2.难点
①行怎么转列
②转成列后[''2019-01"][''2019-02"]....这种列名需要动态转成 [month1][month2]...这种列名~否则Java里面的VO层展示不出来
3.思路
当然是百度咯~
4.行转列
"道生一,一生二,二生需求"~先把第一个给实现一下! 通过一番搜索,有一个函数貌似符合pivot ,不管了先试一把!
select *
from (select NAME, MONEY, MONTH
from TEST)
pivot (max(MONEY) for MONTH in (
'2019-01' ,
'2019-02' ,
'2019-03'
)
);
效果:
emmmm......就是这个效果~
5.mybatis动态传参数和列名
我们先手动把月份数组转一下,换成我们自定义的列名
select *
from (select NAME, MONEY, MONTH
from TEST)
pivot (max(MONEY) for MONTH in (
'2019-01' AS month1 ,
'2019-02' AS month2 ,
'2019-03' AS month3
)
);
好了,效果符合预期~现在剩下的问题就是:
'2019-01' AS month1,怎么通过参数动态传到mybatis中?
传参方式有2种: ${} 和 #{} (具体区别自行百度)
- ${} 替换结果不会增加单引号---也就是说参数传"2019-01" 解析出来后是 2019-01
- #{} 替换结果会增加单引号---也就是说参数传"2019-01" 解析出来后是 "2019-01"
照这么看:我们应该使用: #{月份参数} AS ${列名} 这种形式
但是~ 运行起来就报错~ 如下所示:
-------------------------------------------------------
-------------------------------------------------------
所以老老实实都换成 ${}这种形式~
mybatis关键部分代码参考如下:
Java中传参是monthList
5.总结
学习使我快乐!
Oracle实现行转列+Mybatis的更多相关文章
- Oracle中“行转列”的实现方式
在报表的开发当中,难免会遇到行转列的问题. 以Oracle中scott的emp为例,统计各职位的人员在各部门的人数分布情况,就可以用“行转列”: scott的emp的原始数据为: EMPNO ENAM ...
- 面试题:oracle数据库行转列的问题
今天我一个学弟问了一个面试题: 有表A,结构如下:A: p_ID p_Num s_id1 10 011 12 022 8 013 11 013 8 03其中:p_ID为产品ID,p_Num为产品库存量 ...
- Oracle中"行转列"的实现方式
在报表的开发当中,难免会遇到行转列的问题. 以Oracle中scott的emp为例,统计各职位的人员在各部门的人数分布情况,就可以用"行转列": scott的emp的原始数据为: ...
- Oracle学习总结(4)——MySql、SqlServer、Oracle数据库行转列大全
MySql行转列 以id分组,把name字段的值打印在一行,逗号分隔(默认) select CustomerDrugCode,group_concat(AuditItemName) from noau ...
- oracle 11g行转列 列转行
行转列: SELECT * FROM src_table UNPIVOT (param_value FOR param_name IN (product_color AS 'product ...
- Oracle数据 行转列
记录一段行转列SQL代码: select cs.standard_id,cs.area_code,cs.exu_dept, regexp_substr(exu_dept, , level) as de ...
- Oracle自定义行转列函数
--行转列自定义函数,只针对TABLE1表 --paramType是参数类型,用于判断,param1和param2是条件参数 create or replace function My_concat( ...
- Oracle pivot行转列函数案例
with temp as( select '湖北省' province,'武汉市' city,'第一' ranking from dual union all select '湖北省' provinc ...
- Oracle PIVOT 行转列方法
数据库中業種的存储如下图: SELECT * FROM M_TORIHIKISAKI_GYOSYU 其中GYIUSYU_CD字段代表不同的業種 而画面需要实现下图所示样式:(将每条数据的業種横向展开显 ...
随机推荐
- 启动AutoCAD时自动加载.NET开发的DLL
程序组织,建立名为*.bundle的文件夹,创建Contents子文件夹,并将dll,ico等文件放进Contents中,在*.bundle中创建PackageContents.xml文件,内容如下: ...
- hibernate3.6异常
WARN DTDEntityResolver:73 - recognized obsolete hibernate namespace http://hibernate.sourceforge.net ...
- Java高并发网络编程(一)
一.OSI网络七层模型 因特网是一个极为复杂的网络,分层有助于我们对网络的理解 .分层也是一种标准,为了使不同厂商的计算机能够互相通信,以便在更大范围内建立计算机网络,有必要建立一个国际范围的网络体系 ...
- Vue学习笔记【20】——Vue中的动画(使用动画钩子函数)
定义及使用钩子函数 定义 transition 组件以及三个钩子函数: <div id="app"> <input type="button&q ...
- 芜湖市2018市队选拔Day2T1
好激动啊,Day2竟然AK了! Day2T1养宠物 Descriptionbadgers是可爱的动物,Smart想拥有一些.宠物店提供N个badgers,编号为1..N,Smart都很喜欢,所以他想拥 ...
- jQuery Validate (1)
一.用前必备官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ API: http://jquery.bassist ...
- web服务nginx和php的相互关系
nginx和php有什么关系?很多新手可能有这个疑问,我之前学php也没注意这些问题,只管着按文档配置操作,完成php项目就不管了,最近特意总结了一下. php是一门编程语言,讲究说学逗唱...呃,不 ...
- CSS:CSS 分组 和 嵌套 选择器
ylbtech-CSS:CSS 分组 和 嵌套 选择器 1.返回顶部 1. CSS 分组 和 嵌套 选择器 Grouping Selectors 在样式表中有很多具有相同样式的元素. h1 { col ...
- 机器学习技法笔记:02 Dual Support Vector Machine、KKT
原文地址:https://www.jianshu.com/p/58259cdde0e1 Roadmap Motivation of Dual SVM Lagrange Dual SVM Solving ...
- 注解@Override
Android的开发者对@Override肯定是非常熟悉,不管是自己的代码中还是书上都会出现,但是他是什么意思呢?如下: @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: ...