線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4794
推到 Plurk!
推到 Facebook!

請教sql 語法,合併多重值到一列?

尚未結案
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-08-21 09:14:19 IP:60.248.xxx.xxx 未訂閱
請教,我資料如下
a 20090301
a 20090302
a 20090303
b 20090301
b 20090302
如何用語法呈現如下效果
a 20090301,20090302,20090303
b 20090301,20090302

謝謝
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-08-21 13:23:34 IP:203.75.xxx.xxx 未訂閱
在網路上有看到兩種做法,請參考看看唄

一、純sql
將直式資料以橫式方式(二維方式)顯示-UNION方式

二、T-SQL
row資料合併問題
編輯記錄
GrandRURU 重新編輯於 2009-08-25 09:50:56, 註解 修正連結內容‧
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-08-22 14:15:24 IP:58.114.xxx.xxx 未訂閱
您好,

1. 本站好像有多編討論過
2. 請 google 一下 group_concat
3. 或參考一下
http://blog.xuite.net/st33chen/oracle/21918157

http://blog.xuite.net/st33chen/oracle/22137153


sorry.... sorry..... sorry
寫了才發覺您是在 ms sql 區

不過, 找一下 group_concat mssql 應該有人討論過

找到一編了
http://anthony-yio.blogspot.com/2007/12/mssql-groupconcat.html

http://sodeve.net/ms-sql-version-of-mysqls-group_concat/
http://stackoverflow.com/questions/451415/simulating-groupconcat-mysql-function-in-ms-sql-server-2005






------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2009-08-22 14:23:12, 註解 無‧
st33chen 重新編輯於 2009-08-22 14:25:26, 註解 無‧
st33chen 重新編輯於 2009-08-22 14:27:20, 註解 無‧
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-08-24 09:50:10 IP:60.248.xxx.xxx 未訂閱
謝謝 GrandRURU及st33chen的回應
參考兩位提供的資料

因為我的後端是sql 2000,無法用先進的with及CROSS APPLY這些字
整理好後,用cursor達到,不過感覺上應該還可以用遞迴的方式,只是我這方面功力不夠,先暫且用這樣的方式
不知道有沒有更輕便的辦法?

[code sql]
declare @table1 table(names varchar (50),groupname varchar (50))
insert into @table1(names, groupname)
select 'name1', 'group1' union
select 'name2', 'group2' union
select 'name3', 'group1'

declare @result table(groupname varchar(50),names varchar(50))
declare @string varchar(250),@groupname char(50)
declare list cursor for
select groupname
from @table1
group by groupname

open list
fetch next from list into @groupname
while @@fetch_status = 0
begin
select @string=coalesce(@string,'') names ','
from @table1
where groupname = @groupname

insert @result
select @groupname,@string

fetch next from list into @groupname
end

close list
deallocate list

select *
from @result

[/code]
系統時間:2024-05-06 9:34:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!