oracle 表里面的数据存储转行了,怎么用SQL把它转换成一行存储
譬如表ABC里面有个字段REMARK的vaule是:
一、收信人以归档
二、放款前不少于三万元
要把它转成一行:
一、收信人以归档二、放款前不少于三万元
------解决方案--------------------行转列
网上到处是http://blog.csdn.net/you_tube/article/details/4059251
------解决方案--------------------感觉你不是想进行行转列吧,你是想对多行字段进行拼接?
如果是进行字段拼接给你一下列子:
如果支持wm_concat函数(同ID进行拼接)
SELECT T.ID, wm_concat(t.mark) FROM ABC T GROUP by T.ID;
如果不支持:
SELECT A.ID,
ltrim(MAX(REPLACE(SYS_CONNECT_BY_PATH(MARK, '—'), '—', ',')), ',')
FROM (SELECT T.*,
ROW_NUMBER() OVER(PARTITION BY T.ID ORDER BY T.MARK) AS RN
FROM ABC T) A
START WITH RN = 1
CONNECT BY PRIOR RN = RN - 1
AND PRIOR ID = ID
GROUP BY ID;
------解决方案--------------------我理解楼主的意思是这是一行的数据,中间存在回车符
如果是这样的话,尝试replace(REMARK,chr(10),'、')