declare @list nvarchar(max)
,@last bigint
set @list = ''
set @last = -1
-- 暫存所有查詢結果
create table #tmp_filelist(tmp_1 bigint, tmp_list nvarchar(max))
-- 暫存所有中間執行過程
create table #tmp_file(tmp_1 bigint,tmp_value nvarchar(60), list nvarchar(max))
--將需要的資料儲存在#tmp_file
insert into #tmp_file(tmp_1, tmp_value, list)
SELECT 資料來源
ORDER BY
--處理暫存表的list資料,利用@last來判斷是否要合併(重點:與前一筆資料作比對)
update #tmp_file set @list = list = (CASE WHEN @last <> tmp_1 THEN tmp_value ELSE @list + ',' + tmp_value END), @last =tmp_1
-- 將結果儲存在#tmp_filelist
insert into #tmp_filelist(tmp_1,tmp_list)
select tmp_1, max(list) from #tmp_file group by tmp_1
drop table #tmp_filelist
drop table #tmp_file
感謝Lillian的指導
沒有留言:
張貼留言