日期:2014-05-17  浏览次数:20993 次

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),'、')