Oracle 关于oracle自带的行转列函数
前言:
环境是java+hibernate+oracle11g
目标是将某表中根据id分组后将name字段的值拼接到一列中,且用“,“进行分割
试过用 wm_concat() 结合 group by , 在pl/sql中执行正常,
但是在java程序运行时会报: ORA-22922:不存在的 LOB 值
1.没用hql查询,用的纯sql
2.也将字段转换为varchar类型了: cast(wm_concat(name) as varchar2(2000))
很头疼,网上说可能是hibernate的原因,
后来找了可以替代wm_concat()的方法 listagg(name, ',')
语法如下:
listagg(name, ',') within group(order by id)
应该很好理解:listagg方法的第一个参数是需要进行拼接的字段,第二个参数是字段分隔符,
within 和 order by 是必须的, order by决定了拼接后的各name值的展示顺序
注意,不要忘了group by
例如 表 tmp
id name
1 a
2 b
3 c
2 d
2 c
3 x
sql语句这样写:
select id,listagg(name, ',') within group(order by name) from tmp group by id
结果为:
1 a
2 b,c,d
3 c,x
如果将order by name 改为 order by name desc
结果应该为:
1 a
2 d,c,b
3 x,c
当然,也可以order by 其他字段。根据需要来。
以上例子已经过人工测试,保证可用。
ok,收工回家。
Oracle 关于oracle自带的行转列函数的更多相关文章
- oracle 行转列函数pivot和unpivot
今天接到业务部门的一个需求,需要对同一公司的不同财务指标进行排序,需要用到oracle的行转列函数unpivot. 财务报表的表结构为: 要实现业务部门的排序筛选功能,需要首先将行数据转为列数据: 使 ...
- oracle行转列函数WMSYS.WM_CONCAT 用法
1.通过 10g 所提供的 WMSYS.WM_CONCAT 函数即可以完成 行转列的效果 select group_code, wm_concat(display_title) from DR_OPM ...
- Oracle自定义行转列函数
--行转列自定义函数,只针对TABLE1表 --paramType是参数类型,用于判断,param1和param2是条件参数 create or replace function My_concat( ...
- 【Teradata SQL】行转列函数TDStats.udfConcat
TDstats.udfConcat为Teradata自带UDF,定义如下: show function tdstats.udfconcat; REPLACE FUNCTION tdstats.UDFC ...
- oracle的 listagg() WITHIN GROUP () 行转列函数的使用
1.使用条件查询 查询部门为20的员工列表 -- 查询部门为20的员工列表 SELECT t.DEPTNO,t.ENAME FROM SCOTT.EMP t where t.DEPTNO ...
- oracle中,行转列函数wm_concat()结果有长度限制,重写该函数解决
--Type CREATE OR REPLACE TYPE zh_concat_im AUTHID CURRENT_USER AS OBJECT ( CURR_STR clob, STATIC FUN ...
- oracle行转列函数
- Oracle pivot行转列函数案例
with temp as( select '湖北省' province,'武汉市' city,'第一' ranking from dual union all select '湖北省' provinc ...
- oracle行转列函数以及一些窗口函数(PIVOT ,OVER)
可以查看博客园上传的文件 pivot 除了要转成列的字段(classnum,classid)值不一样,其他值都应该相同,否则转的数据有问题
随机推荐
- python tkinter模块 创建窗口V1.2
先上图 代码如下 #-*-coding:utf-8-*- import os from tkinter import * root=Tk() root.title('执行窗口') "&quo ...
- Attention-based Model
一.Attention与其他模型 1.LSTM.RNN的缺点:输入的Memory长度不能太长,否则参数会很多. 采用attention可以输入长Memory,参数不会变多. 2.Sequence to ...
- 【Android】登陆界面设计
界面布局 布局其实很简单,用相对布局累起来就可以了,然后注册和记住密码这两个控件放在一个水平线性布局里 界面底部还设置了一个QQ一键登录的入口,可以直接用. 控件的ID命名有点乱 <?xml v ...
- Django cookie、session使用
一.cookie Cookie是key-value结构,类似于一个python中的字典.随着服务器端的响应发送给客户端浏览器.然后客户端浏览器会把Cookie保存起来,当下一次再访问服务器时把Cook ...
- 2. Python中的基本输入、输出、格式化
本文利用的是Python 3.x版本,建议学习3.x版本 Python中的基本输入.输出.格式化 1. 输入 使用input([prompt])读取一行,将其转换为string类型并返回,input的 ...
- Python-程序的控制结构
程序的分支结构 >单分支结构 根据判断条件结果而选择不同向前路径的运行方式 if <条件>: <语句块> 代码示例: guess = eval(input()) if g ...
- 【转载】Apache shutdown unexpectedly启动错误解决方法
http://blog.csdn.net/dong123dddd/article/details/21372179 xampp启动时显示的错误为: 9:52:41 [Apache] Attempti ...
- 【MFC Programming】 Using Dialog To Set A Correlate Menu
This blog will show how to display a menu we designed in a dialog. 1.Insert a new dialog& a new ...
- PHP中http协议详解
对PHP文件来说 Php能够有 html css javascript php脚本 flash它的不同部分是在不同的地方运行的(server和client) http协议 1. http协议是建 ...
- 【 D3.js 进阶系列 — 2.2 】 力学图的參数
力学图的布局中有非常多參数.本文将逐个说明. D3 中的力学图布局是使用韦尔莱积分法计算的.这是一种用于求解牛顿运动方程的数值方法,被广泛应用于分子动力学模拟以及视频游戏中. 定义布局的代码例如以下: ...