ORACLE 用SQL同一列的多行记录拼接成一个字符串
来源:互联网 发布:mac safari怎么截图 编辑:程序博客网 时间:2024/05/16 07:08
- -- 原始数据
- -- a 111
- -- b 222
- -- a 333
- -- a 444
- -- b 555
- -- 最终结果
- -- a 111*333*444
第一种方案:
SELECT
L4.BL_NO,L4.SAILING_DT,L4.VESSEL_CD,L4.VOYAGE,L4.CURRENCY_CD
,MAX(SUBSTR(L4.分组内容,2)) 最终字段值
,MAX(SUBSTR(L4.分组2,2)) 最终字段值
FROM(
SELECT
L3.BL_NO,L3.SAILING_DT,L3.VESSEL_CD,L3.VOYAGE,L3.CURRENCY_CD
,SYS_CONNECT_BY_PATH(L3.FEE_CD,'*') AS 分组内容
,SYS_CONNECT_BY_PATH(L3.BL_MSG,'*') AS 分组2
FROM(
SELECT
L2.BL_NO,L2.SAILING_DT,L2.VESSEL_CD,L2.VOYAGE,L2.CURRENCY_CD
,L2.FEE_CD,L2.BL_MSG
,L2.BL_NO||L2.分组内编号 AS 分组字段加编号,L2.BL_NO||(L2.分组内编号-1) AS 上级分组字段加编号
FROM(
SELECT
distinct L1.BL_NO,L1.SAILING_DT,L1.VESSEL_CD,L1.VOYAGE,L1.CURRENCY_CD -- 分组依据
,L1.FEE_CD
,L1.BL_MSG -- 同一列中 要合并的不同行 的值
,ROW_NUMBER() OVER (PARTITION BY
L1.BL_NO,L1.SAILING_DT,L1.VESSEL_CD,L1.VOYAGE,L1.CURRENCY_CD
ORDER BY L1.FEE_CD,L1.BL_MSG ASC) 分组内编号
FROM t_eir_orderdtl L1
where L1.eir_order_id=2539
) L2
) L3
START WITH L3.上级分组字段加编号 LIKE '%0'
CONNECT BY PRIOR L3.分组字段加编号=L3.上级分组字段加编号
) L4
GROUP BY L4.BL_NO,L4.SAILING_DT,L4.VESSEL_CD,L4.VOYAGE,L4.CURRENCY_CD- -- ROW_NUMBER() OVER(PARTITION BY A ORDER BY B DESC) 新列名
- -- 根据A分组,在分组内部根据B排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
- -- SYS_CONNECT_BY_PATH 函数: 第一个参数是形成树形式的字段,第二个参数是父级和其子级分隔显示用的分隔符
- -- CONNECT BY PRIOR 是标示父子关系的对应
- -- START WITH 代表你要开始遍历的的节点
- 第二种方案:
- select eir.BL_NO,eir.SAILING_DT,eir.VESSEL_CD,eir.VOYAGE,eir.CURRENCY_CD,
wm_concat(distinct eir.FEE_CD) as FEE_CD,wm_concat(distinct eir.BL_MSG) as BL_MSG
from t_eir_orderdtl eir
where eir.eir_order_id=2539
group by eir.BL_NO,eir.SAILING_DT,eir.VESSEL_CD,eir.VOYAGE,eir.CURRENCY_CD
=======================================================================================================
原始数据:
查询结果:
0 0
- 用SQL将Oracle中同一列的多行记录拼接成一个字符串
- ORACLE 用SQL同一列的多行记录拼接成一个字符串
- sql 同一列的多行内容拼接成字符串
- 如何将Oracle中同一列的多行记录拼接成一个字符串 十一__262 | 浏览 8183 次 推荐于2016-01-25 17:34:18 最佳答案 需要用wm_concat函数来实现。
- oracle同一列的字符串拼接
- oracle同一列字符串拼接
- SqlServer和Oracle从多行记录(数据集)中查询结果并拼接成一个字符串的SQL语句(纵表数据转成拼接的文本)
- 用SQL将查询出来的多列的值拼接成一个字符串
- 用SQL将查询出来的多列的值拼接成一个字符串
- 用SQL将查询出来的多列的值拼接成一个字符串
- oracle中wm_concat函数将同一列的多行字段值拼接成一行
- Oracle 将 不同列 的值 拼接成一个 字符串
- SQL STUFF函数 同一列值拼接 拼接字符串
- oracle 将多条记录拼接成一个字符串
- oracle 将多条记录拼接成一个字符串
- SQL 表数据多行某一列拼接成一个字符串
- 多条记录拼接成一个字符串
- SQL语句中把多条记录同一字段的值连接成一个字符串显示结果集(sql stuff)
- 一个非常有用的函数——COALESCE 多行合并成一行
- MTK Android flash 配置
- Ubuntu源码编译安装开源飞信OpenFetion
- POJ 1163 The Triangle
- Ubuntu_osproj配置问题解决
- ORACLE 用SQL同一列的多行记录拼接成一个字符串
- 黑马程序员——OC语言日志——description方法介绍及重写
- RxJava 学习址,真的很不错。
- 成功的背后!(给所有IT人)
- 装饰者模式
- js控制文本框输入的内容为(数字、字母、汉字)(一、js在控件中实现)
- java中的语句
- photoView中的fling事件分析
- jdk,tomcat,maven,eclipse安装,配置,集成