ورود

View Full Version : جمع رشته در دستور select



rezaei manesh
سه شنبه 23 اسفند 1384, 13:22 عصر
سلام
من یک جدول دارم که 2 تا فیلد داره یکی idو یکی Cname حالا من می خوام بر حسب id گروپ کنم و cname ها رو با هم جمع کنم
مثلا اگه تو تا رکورد با id=5 وجود داشت و cname یکی x و دیگری y بود نتیجه x y باشه میشه چنین کاری کرد؟

AminSobati
سه شنبه 23 اسفند 1384, 14:14 عصر
سلام،
این کار در اصل به نوشتن Custom Aggregate Function نیاز داره که در SQL Server 2005 میسره. در 2000 شما باید یک تابع بنویسید که id رو دریافت کنه و CNameها رو جمع بزنه و به عنوان خروجی یک String برگردونه. حالا این تابع رو در لیست فیلدهای جلوی Select بکار ببرید.
به عنوان مثال، این تابع نام کشور رو دریافت میکنه و مشخص میکنه چه شهرهایی از این کشور در جدول ما وجود داره:


USE northwind
go

create function fn_SumCity (@Country nvarchar(50))
returns nvarchar(1000)
as
begin
declare @SumCity nvarchar(4000)
set @SumCity=''
select @SumCity=@SumCity+city+',' from
(select distinct country,city from customers) tmp where country=@country
if len(@SumCity)<>0
set @SumCity= left(@SumCity,len(@SumCity)-1)
return @SumCity
end
go

--NOW TRY IT:
select distinct country,dbo.fn_SumCity(country) from customers

h_baqery
چهارشنبه 24 اسفند 1384, 10:39 صبح
فقط بنویسselect Id,Sum(Cname) from TableName group by Id

AminSobati
چهارشنبه 24 اسفند 1384, 11:35 صبح
فقط بنویسselect Id,Sum(Cname) from TableName group by Id
دوست عزیزم SUM روی String عمل نمیکنه

rezaei manesh
چهارشنبه 24 اسفند 1384, 15:57 عصر
سلام
ممنون آقا امین مشکلم حل شد