এটি আপনার পরিচ্ছন্নতার পরে থাকতে পারে। মূলত, ভেরিয়েবলটি এখনও আরম্ভ করা হয়েছে কিনা তা পরীক্ষা করে দেখুন। যদি তা না হয় তবে খালি স্ট্রিংটিতে সেট করুন এবং প্রথম শহর সংযুক্ত করুন (কোনও শীর্ষস্থানীয় কমা নেই)। যদি এটি থাকে তবে কমা যুক্ত করুন, তারপরে শহরটি যুক্ত করুন।
DECLARE @col nvarchar(MAX);
SELECT @col = COALESCE(@col + ',', '') + city
FROM dbo.tbl WHERE state = 'California';
অবশ্যই, এটি শুধুমাত্র প্রতি রাজ্যে একটি পরিবর্তনশীল পপুলিংয়ের জন্য কাজ করে। আপনি যদি একবারে প্রতিটি রাজ্যের জন্য তালিকাটি টানছেন তবে একটি শটে আরও ভাল সমাধান পাওয়া যাবে:
SELECT [state], cities = STUFF((
SELECT N', ' + city FROM dbo.tbl
WHERE [state] = x.[state]
FOR XML PATH(''), TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 2, N'')
FROM dbo.tbl AS x
GROUP BY [state]
ORDER BY [state];
ফলাফল:
state cities
---------- --------------------------------------
California San Francisco, Los Angeles, Sacramento
Florida Miami, Jacksonville
প্রতিটি রাজ্যের মধ্যে শহরের নাম অনুসারে অর্ডার করতে:
SELECT [state], cities = STUFF((
SELECT N', ' + city FROM dbo.tbl
WHERE [state] = x.[state]
ORDER BY city
FOR XML PATH(''), TYPE).value(N'.[1]', N'nvarchar(max)'), 1, 2, N'')
FROM dbo.tbl AS x
GROUP BY [state]
ORDER BY [state];
অ্যাজুরে এসকিউএল ডেটাবেস বা এসকিউএল সার্ভার 2017+ এ আপনি নতুন STRING_AGG()
ফাংশনটি ব্যবহার করতে পারেন :
SELECT [state], cities = STRING_AGG(city, N', ')
FROM dbo.tbl
GROUP BY [state]
ORDER BY [state];
এবং শহরের নাম অনুসারে অর্ডার করা:
SELECT [state], cities = STRING_AGG(city, N', ')
WITHIN GROUP (ORDER BY city)
FROM dbo.tbl
GROUP BY [state]
ORDER BY [state];