1. 程式人生 > 實用技巧 >SQL SERVER / ORACLE 拼接多行記錄欄位為一個字串的方法

SQL SERVER / ORACLE 拼接多行記錄欄位為一個字串的方法

SQL SERVER / ORACLE 拼接多行記錄欄位為一個字串的方法:

ORACLE:使用WMSYS.WM_CONCAT(注意選取的欄位增加to_char轉換,確保字元編碼正確)

SQL SERVER:使用連線字串方式選取

select @s = @s + ',' + rtrim(ltrim(NAME)) from tableA;

select substring(@s, 2, len(@s));

declare @sql VARCHAR(MAX), @tracetypes VARCHAR(MAX)
set @sql = 'select WMSYS.WM_CONCAT(to_char(TRACETYPE)) TRACETYPES from ( select TRACETYPE from data.COMMONTRACELOG where ID > 
' + CONVERT(VARCHAR(50),@c2) + ' group by TRACETYPE order by count(1) desc ) where rownum <= 10' SELECT @tracetypes=TRACETYPES FROM OPENQUERY(clinicdb, 'select WMSYS.WM_CONCAT(to_char(TRACETYPE)) TRACETYPES from ( select TRACETYPE from data.COMMONTRACELOG where ID > ' + CONVERT(VARCHAR(50),@c2) +
' group by TRACETYPE order by count(1) desc ) where rownum <= 10') SELECT TRACETYPE, count(1) FROM OPENQUERY(clinicdb,'select * from data.commontracelog c') c WHERE c.ID > @c2 group by TRACETYPE order by count(1) desc declare @s varchar(max); set @s=''; select @s = @s + ',' + rtrim(ltrim(TRACETYPE)) from
(SELECT TOP 10 TRACETYPE FROM OPENQUERY(clinicdb,'select * from data.commontracelog c') c WHERE c.ID > @c2 group by TRACETYPE order by count(1) desc) t; select substring(@s, 2, len(@s));