Я переписываю несколько страниц плохо написанного приложения, я пытаюсь включить эту логику в основной запрос как подзапрос, чтобы я мог получить все данные одним махом вместо соединения 50K раз, как текущий код.
Я начал с
DECLARE @combinedString NVARCHAR(MAX),@mds NVARCHAR(MAX)
SELECT
@combinedString = COALESCE(@combinedString + ', ', '') + serial,
@mds = MDS
FROM
(aircraftserials
LEFT JOIN
serialnums ON serialnums.ID = aircraftserials.Serialnum_ID)
WHERE
(85 = aircraftserials.Aircraft_ID AND serial IS NOT NULL)
Я хочу исключить эти переменные и сделать это подзапросом,
Я думаю, что мне нужен CTE;конечный результат должен быть
MDS, concatenated serials
Я пробовал этот пост, но не могу его получить Упростить объединение строк CTE?
Вот пример данных
CREATE TABLE TestBed
(
Aircraft_ID INT,
Serial VARCHAR(50),
MDS VARCHAR(50)
)
INSERT INTO TestBed (Aircraft_ID, Serial, MDS)
VALUES (85, '56-1965', 'T-37B'),
(85, '56-1967', 'T-37B'),
(85, '56-3547', 'T-37B'),
(85, '56-3577', 'T-37B'),
(85, '57-2265', 'T-37B'),
(85, '57-2272', 'T-37B'),
(85, '58-1915', 'T-37B'),
(85, '58-1925', 'T-37B'),
(85, '59-0249', 'T-37B'),
(85, '59-0273', 'T-37B'),
(85, '59-0299', 'T-37B')
select * from TestBed