PDA

View Full Version : Aggregate Text Function For Grouping



infidel
یک شنبه 16 اسفند 1383, 13:17 عصر
با سلام و عرض ادب ،

خدمت دوستان عرض شود میخواستم من رو در جمع متنی یک فیلد text که در یک Query گروه بندی میشود ، راهنمائی کنید .
مثلا راهی را پیشنهاد فرمائید که نتیجه Query فرضی زیر را داشته باشد
Select a, concatenate(b) from c group by a
که فیلد b متنی و تابع concatenate جهت اتصال محتوای فیلد b رکوردهای هم گروه است .
در صورتیکه قبلا پستی با این مزمون مطرح شده است . ضمن عرض پوزش، آدرس مربوطه را اعلام فرمائید .

AminSobati
دوشنبه 24 اسفند 1383, 12:59 عصر
دوست عزیزم،
من اطلاعی ندارم تابع concatenate که مثال زدین چه عملی انجام میده، اما در SQL Server 2000 فقط عملگرهای Sum, Min, Max, Count, Avg در Group By قابل استفاده هستند.
اگر این عملگرها کار شما رو انجام نمیده، پس باید منتظر SQL Server 2005 باشید، چون در اونجا Customized Aggregation خواهیم داشت! :)

infidel
دوشنبه 24 اسفند 1383, 18:46 عصر
درود ،

جناب ثباتی ، از بذل توجه حضرت عالی کمال تشکر را دارم ،
اینکه تابع concatenate وجود ندارد و مجموعه توابع Avg,Count,Max,Min,Sum نیز قادر به پاسخ مشکل من نیست، برای من امری محرز و بدیهی است ، لذا صرفا انتظار راه حلی از طریق subQuery یا حتی Stored procedure داشتم . البته من مشکلم را از طریق برنامه نویسی در طرف کلاینت حل کردم لذا دنبال راه حل بهینه ای در طرف سرور دیتا بودم . که در بخش شما با ناکامی مواجه شدم ،

با توجه به فرمایش شما یک بار دیگه نیاز خود را با یک مثال به شرح زیر عرص میکنم :

فرض بگیرید جدولی با نام Articles شامل فیلدهای ArticleID و ArticleTitle موجود است که عناوین مقالات را در خود نگه میدارد . همچنین فرض کنید هر مقاله در جدولی دیگر بنام Paragraphs ، با فیلدهای ParagraphID و ParagraphBody و َArticleID پاراگراف بندی می شود
حال مطلوب است راه حلی در طرف دیتا سرور که کل مقاله ششم را ازطریق یک درخواست برگرداند

اگر تابع Concatenate وجود میداشت راه حل ساده به شرح زیر قابل بیان بود :
SELECT Concatenate(ParagraphBody) FROM Paragraphs WHERE ArticleID=6

لذا
در صورت داشتن راه حل خاصی ، اینجانب را از دانش پر مایه خود بی بهره نگذارید.

قبلا از زحمات شما متشکرم

AminSobati
دوشنبه 24 اسفند 1383, 21:52 عصر
دوست عزیزم،
تا جایی که من متوجه شدم، شما نیاز به Aggregate Operator ندارید، بلکه:


DECLARE @tmp NVARCHAR(1000)
SET @tmp=''
SELECT @tmp=@tmp+ParagraphBody + ' ' FROM Paragraphs WHERE ArticleID=6
SELECT @tmp

infidel
سه شنبه 16 فروردین 1384, 14:26 عصر
درود

از توجه شما متشکرم .
امیدوارم با عنایت به اسکریپت پیشنهادی حضرت عالی ، مشکلم حل شود .
:موفق:

بدرود

AminSobati
چهارشنبه 17 فروردین 1384, 00:02 صبح
موفق باشید :)