2013年6月6日 星期四

多筆記錄合併成一筆

參考引用
--
***這個方法是採用迴圈方式去處理

假設TableA為 tableA(food,price),裡面有資料如下:
food  |  price
西瓜      20
蘋果      50
香蕉      20
鳳梨      30

接下來想把相同金額的水果進行分類,想要的格式如下:
(用逗號分隔水果的話,輸出成csv格式就會自動再分格成不同欄位唷!)
#tempA

price | food
20       西瓜,香蕉
30       鳳梨
50       蘋果



指令:

--先將
select distinct price , cast(' ' as varchar(max))  into #tempA from tableA

--宣告游標
DECLARE food_cursor CURSOR for select * from #tempA

OPEN food_cursor

--宣告變數
DECLARE @result varchar(200) --進行字串串接使用
DECLARE @food varchar(50)
DECLARE @price varchar(50)
DECLARE @cmd varchar(200) --debug時,輸出select指令
--將游標指向下一筆紀錄,擷取值設進@food以及@price
FETCH NEXT FROM tables_cursor INTO @food,@price

--開始跑迴圈
WHILE (@@FETCH_STATUS  <> -1)
BEGIN

--set @cmd = 'select food,@result='+@result+ ',price from (select food from #tempA where price=' + @price+')Duration'
set @result=''
select @result=@result+','+food from (select food from #tempA where price=@price)Duration
--PRINT 'Contact Name after: ' + @food + '_' + @price + '_' + @result+'---'+@cmd
update #tempA  set result=rtrim(@result) where price=@price
FETCH NEXT FROM food_cursor INTO @food,@price
end
CLOSE food_cursor
DEALLOCATE food_cursor

沒有留言:

張貼留言