Когда я использую оператор STUFF для объединения строк, он сортирует их в алфавитном порядке и численно, что заставляет значения переупорядочивать в нежелательном порядке. Как предотвратить это.Оператор SQL STUFF неправильный порядок
STUFF ((SELECT '; ' + t2.[film name]
FROM [filmbase].[dbo].[filmstowatch] t2
WHERE t1.[Mobile Number] = t2.[Mobile Number]
FOR XML PATH('')), 1,2,'') [film name],
STUFF ((SELECT '; ' + t2.[customer No]
FROM [filmbase].[dbo].[filmstowatch] t2
WHERE t1.[Mobile Number] = t2.[Mobile Number]
FOR XML PATH('')), 1,2,'') [customer no]
FROM temp.dbo.Temptable t1
Например,
Исходные данные:
Заказчик №: -1
Film Имя: - Fast & Furious
Номер мобильного телефона: - 123456789
Клиент №: -2
Film Имя: - 2 Fast 2 Furious
Номер мобильного телефона: - 123456789
Заказчик №: -3
Film Имя: - Fast & Furious Tokyo Drift
Номер мобильного телефона: - 123456789
Фактический выход:
Mobile Number:- 123456789,
Film Name:- 2 Fast 2 Furious; Fast & Furious; Fast & Furious Tokyo Drift
Customer No:- 1;2;3
Желаемая Выход:
Mobile Number:- 123456789,
Film Name:- 2 Fast 2 Furious; Fast & Furious; Fast & Furious Tokyo Drift
Customer No:- 2;1;3
Я хочу, чтобы название фильма, чтобы соответствовать количеству клиентов в порядке, что название фильма представлено в желаемом примере вывода.
Я думаю, код должен быть чем-то вроде
STUFF ((SELECT '; ' + t2.[film name]
FROM [filmbase].[dbo].[filmstowatch] t2
WHERE t1.[Mobile Number] = t2.[Mobile Number]
order by film_name /* and then here should be something that matches film name to customer no??*/
FOR XML PATH('')), 1,2,'') [film name],
Чтобы получить 2F2F, е & F, F & FTD, 2,1,3 ВМЕСТО я получаю 2F2F, е & F, F & fTD, 1,2,3, чего я не хочу.
Операция 'STUFF' не выполняет никаких переупорядочений. Если вы хотите, чтобы заказ добавлял 'order by' к вашим запросам' xml path'. –
Я не уверен, знаете ли вы, что я хотел, но в основном после написания сценария я хотел вернуться в одну строку: номер мобильного телефона, имена фильмов и номер клиента. где имена фильмов и имена клиентов имеют свои значения: 2f2f = 2, f & f = 1, f & fTD = 3 ... вместо этого я получаю 2f2f = 1, f & f = 2, f & fTD = 3 –