Anda tidak dapat bergantung pada rangkaian seperti:
SELECT @result = COALESCE(@result + ',', '') + [Title]
FROM Episodes
...
Rencana Eksekusi dan Hasil Kueri Penggabungan Agregat Bergantung Pada Lokasi Ekspresi
Contoh tergantung pada CTE/temp table/rencana eksekusi Anda akan mendapatkan hasil yang berbeda:
DECLARE @text VARCHAR(MAX) = ''
,@text2 VARCHAR(MAX) = '';
SELECT CAST(ROW_NUMBER() OVER (ORDER BY name) AS INT) AS number
INTO #numbers
FROM master..spt_values
;WITH numbers (number)
AS
(
SELECT CAST(ROW_NUMBER() OVER (ORDER BY name) AS INT) AS number
FROM master..spt_values
),a AS
(
SELECT number FROM numbers WHERE number < 10
)
SELECT @text = @text + LTRIM(STR(a.number))
FROM a
ORDER BY a.number DESC
;WITH numbers (number)
AS
(
SELECT number FROM #numbers
),
a
AS
(
SELECT number FROM numbers WHERE number < 10
)
SELECT @text2 = @text2 + LTRIM(STR(a.number))
FROM a
ORDER BY a.number DESC
SELECT @text, @text2;
Saya membuat sampel dan kueri pertama Anda berfungsi SqlFiddleDemo . Tetapi solusi Anda sangat bergantung pada rencana eksekusi.
Gunakan XML + BARANG untuk penggabungan sebagai gantinya.