将多行Select语句结果转换为单行字符串结果

时间:2014-10-17 22:36:27

标签: sql oracle oracle10g

我有以下sql查询。我希望结果与,连接,我需要将其作为单个查询。

Select LOCATION_CODE from LOCATION WHERE ZIPCODE = '555555';

位置表

  location_id | location_code   |  zipcode
--------------------------------------------
      1       |    ASDFSFD      |  555555    
      2       |    OUIXVCX      |  555555
      3       |    2KLJSDF      |  555555
      14      |    887CSD       |  555555

需要以下结果...... ASDFSFD,OUIXVCX,2KLJSDF,887CSD

2 个答案:

答案 0 :(得分:2)

with location_code as (
select 'ASDFSFD' loc_code, 555555 zipcode from dual
union all select 'OUIXVCX', 555555 from dual
union all select '2KLJSDF', 555555 from dual
union all select '887CSD', 555555 from dual
)
select rtrim (xmlagg (xmlelement (e, loc_code || ',')).extract ('//text()'), ',') 
from location_code where zipcode = 555555;

答案 1 :(得分:1)

如果您使用的是Oracle 10g,还可以使用未记录的聚合函数WM_CONCAT()

SELECT WM_CONCAT(location_code) FROM location WHERE zipcode = 555555;

一个可能的警告是WM_CONCAT()在某些版本的Oracle 10g中返回CLOB(例如,10.2.0.5),在其他版本中返回VARCHAR2(例如,10.2.0.1)。

您还可以开发自己的字符串连接聚合函数;请参阅以下链接了解具体信息(以及其他如何完成字符串连接的方法):

http://www.oracle-base.com/articles/misc/string-aggregation-techniques.php#wm_concat