今天开发报表遇到了ORA-22922:不存在的LOB值问题,原因是用了wm_concat函数,转换后是clob类型,导致报表查询时报错。后来改为使用listagg函数替代,完美解决问题,同时网上还有一种解决方法。新建一个自定义函数。保存一下这个自定义函数列转行的函数:createorreplaceTYPEzh_..
分类:
其他好文 时间:
2017-01-03 22:51:07
阅读次数:
175
SQL 行转列和列转行 行列互转,是一个经常遇到的需求。实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现。 在读了技术内幕那一节后,虽说这些解决方案早就用过了,却没有系统性的认识和总结过。为了加深认识,再总结一次。 行列互转,可以分为静态互转,即事先就知道 ...
分类:
数据库 时间:
2016-12-09 16:06:42
阅读次数:
247
注:财务需要统计各产品品类各城市上周毛利情况 下面这样的表是沟通后展现的形式。数据展现形式我认为的大都是行列转 列转行的转置 从财务角度这样展现形式比较适合。 由于黄色部分为汇总项目,因此我拆分成9个转换步骤 类似纵向合并 只是汇总和各品类的字段不同无法纵向合并 因此用kettle时候汇总的各自成一 ...
分类:
数据库 时间:
2016-12-03 02:05:16
阅读次数:
234
1.建表及插入数据,2.使用CASE语句查询,3.使用PIVOT行转列,4.PIVOT动态获取列,5.使用UNPIVOT列转行 ...
分类:
数据库 时间:
2016-12-02 07:42:02
阅读次数:
246
Expando 是liferay的一种自定义表格扩展的方式,从5.0就已存在 , 可以在运行时新建表格\字段\行\值. 这是一种Service Builder之外的轻量级替代扩展方式,不必像Service Builder那么繁琐, 实现的具体技术实际上是列转行,其中ExpandoValue有点像Ac ...
这是最基础的用法: LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX) 例: select listagg(oeid,',') within GROUP (order by oeid) ...
分类:
数据库 时间:
2016-11-23 12:42:47
阅读次数:
310
这段sql的意思 是 查询出所有客户收款信息 然后按客户分组 分组后 然后将这个客户的所有首款的金额放在一组 然后聚合 组成首款字段 所有尾款金额 放在一组 然后sum 聚合 组成尾款字段 最终查出 统计的时候 或者 做运算的时候非常有用 如果需要列转行 可以使用union方式 比如我们上面这个表 ...
分类:
数据库 时间:
2016-11-19 12:13:31
阅读次数:
227
在做数据统计的时候,行转列,列转行是经常碰到的问题。case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比较快速实现行转列,列转行,而且可扩展性强 一、行转列 1、测试数据准备 2、行转列sql 执行结果: 二、列转行 1、测试数据准备 2、列转行的sql 执行结果 ...
分类:
数据库 时间:
2016-11-07 01:35:19
阅读次数:
317
将下面表(1)格式的数据转换为表(2)格式的数据。很明显,这是一个行转列的要求,本想在数据库中行转列,因为在数据库中行转列是比较简单的,方法可以参考本站SQLServer中(行列转换)行转列及列转行且加平均值及汇总值,但因其它需求,最终需将该转化搬到C#中进行了。 (表1) 表(2) 不多说了,下面 ...