Saya memiliki tabel (EMP
) yang saya tahu bahwa dengan menggunakan fungsi COALESCE
kita bisa mendapatkan nilai dari kolom apa pun dengan cara ini
23,23,45,34
SELECT OfferID FROM Emp where EmpID= 23
tetapi saya tidak mendapatkan sintaks untuk mencapai hal ini
Bantuan apa pun akan sangat bagus, untuk menyelesaikan masalah ini.
Saya telah melakukan ini menggunakan COALESCE
di masa lalu juga, tetapi saya menyarankan pendekatan lain karena Anda tidak memerlukan variabel. Gunakan fungsi T-SQL
STUFF
untuk menyelesaikannya.
SELECT STUFF((
select ','+ cast(OfferID as nvarchar(255))
from Emp b
WHERE a.EmpID= b.EmpID
FOR XML PATH('')
),1,1,'') AS COLUMN2
FROM Emp a
GROUP BY a.EmpID
DECLARE @List VARCHAR(8000)
SELECT @List = COALESCE(@List + ',', '') + CAST(OfferID AS VARCHAR)
FROM Emp
WHERE EmpID = 23
SELECT @List
Pendekatan penggabungan agregat ini tidak dijamin akan berhasil. Jika Anda menggunakan setidaknya SQL Server 2005 XML PATH
atau agregat CLR lebih disukai.
Artikel definitif tentang subjek ini adalah Penggabungan Nilai Baris dalam Transact-SQL2
Fungsi Isnull juga akan memberikan hasil yang sama
DECLARE @List VARCHAR(8000)
SELECT @List = ISNULL(@List + ',', '') + CAST(OfferID AS VARCHAR)
FROM Emp
WHERE EmpID = 23
SELECT @List