-
例:field1field2
-
A1
-
A2
-
A3
-
-
用一条sql语句查询成:
-
field1all
-
A1,2,3,
-
-
大家一起动脑思考吧。
oracle实现:
-
-
createtabletab1(avarchar2(16),bvarchar2(16));
-
insertintotab1values('a','1');
-
insertintotab1values('a','2');
-
insertintotab1values('a','3');
-
insertintotab1values('b','4');
-
insertintotab1values('b','5');
-
commit;
-
-
SELECTa,WMSYS.WM_CONCAT(b)
-
FROMtab1
-
GROUPBYa;
-
-
-
1a1,2,3
-
2b4,5
注:WMSYS.WM_CONCAT支持的字符串的最大长度是4000
oracle10g以前实现方式:
SELECT
n_sec_code, TRANSLATE (LTRIM (text, '/'), '*/', '*,') researcherList
FROM (SELECT ROW_NUMBER () OVER (PARTITION BY n_sec_code ORDER BY n_sec_code,
lvl DESC) rn,
n_sec_code, text
FROM (SELECT n_sec_code, LEVEL lvl,
SYS_CONNECT_BY_PATH (c_researcher_code,'/') text
FROM (SELECT n_sec_code, c_researcher_code as c_researcher_code,
ROW_NUMBER () OVER (PARTITION BY n_sec_code ORDER BY n_sec_code,c_researcher_code) x
FROM m_researcher_stock_rel
ORDER BY n_sec_code, c_researcher_code) a
CONNECT BY n_sec_code = PRIOR n_sec_code AND x - 1 = PRIOR x))
WHERE rn = 1
ORDER BY n_sec_code;
预想的结果成功出现,多行数据成功汇总到一行,特此分享与大家。对于你自己的应用中,
只需要把SQL中“n_sec_code”换为你的用来汇总的列,
“c_researcher_code”替换为需合并文本的列,
“m_researcher_stock_rel”替换为你的表名,就是这么简单。
SQL分析:
1、利用 “ROW_NUMBER () OVER (PARTITION BY……” 为按“股票代码”汇总后的数据行添加组内序号
2、“SYS_CONNECT_BY_PATH” 按组内序号相邻关系,为每一层进行不同行的“研究员代码”叠加
3、再次利用“股票代码”进行组内分组,但按第二部中的层次排倒序,增加调整后等级
4、取所有调整后等级为1的结果,即为所要求的数据行
分享到:
相关推荐
Oracle多行记录合并/连接/聚合字符串的几种方法
oracle10g,9i多行合并一行函数
oracle纯SQL语句多行合并一行,中间用“,”隔开,方便快速的显示在页面上
SQL语句用with将列分割成多列存为临时表,再将多行某个字段拼接合并为一行
本文实例讲述了oracle实现多行合并的方法。分享给大家供大家参考。具体分析如下: 在写sql时,经常会有将某列的字段合并起来,比如将某人名下每个月的工资列示,但是每个人只能占一行。 像这种场景,可能用行列转换...
多行记录合并 采用的是方法4,希望对你们有用
oracle某个字段多行记录转化为一行,oracle某个字段多行记录转化为一行。
1.被集合字段范围小且固定型 灵活性 性能 难度 2.固定表固定字段函数法 灵活性 性能 难度 3.灵活表函数法 灵活性 性能 难度 4.一条SQL法 灵活性
oracle数据库一行拆成多行.sql
Oracle插入多行实例,简单介绍了oracle插入多行的实例
介绍了将多行转为字符串的三种方案,并比较了三种方案的执行效率. 1.sys_connect_by_path + start with ... connect by ... prior + 分析函数 2.自定义Function/SP 3.使用 Oracle 10g 内置函数 wmsys.wm_concat
怎么合并多行记录的字符串,一直是oracle新手喜欢问的SQL问题之一,关于这个问题的帖子我看过不下30个了,现在就对这个问题,进行一个总结。
oracle 某列存儲的值是有逗號的字符串,希望通過逗號分隔開來顯示多行。sql,有預期結果,有項目實戰。
Oracle 分割字符串 返回多行数据
NULL 博文链接:https://czjxdm.iteye.com/blog/466948
比如一个字段'11,22,22,33,44',一个查询语句显示成4行,就可以这样来实现。 11 22 22 33 44
存在多张不同表空间,这时候需要把所有的表空间都合并成一个表空间
Oracle时间区间段合并统计的算法