當我使用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
電影名稱: - 快速&激情
手機號碼: - 123456789
客戶編號:-2
電影名稱: - 速度與激情2
手機號碼: - 123456789
客戶編號:-3
電影名稱: - 快速&激情東京漂移
手機號碼: - 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,F & FTD,2,1,3 相反,我得到2F2F,F & F,F & fTD,1,2,3這是我不想要的。
'STUFF'語句不做任何重新排序。如果你想要一個訂單,可以在你的'xml path'查詢中添加'order by'。 – 2015-04-02 11:48:05
我不知道你是否知道我想要什麼,但基本上在寫完腳本後我想回到一行:手機號碼,電影名稱和客戶號碼。電影名稱和客戶名稱的值分別爲:2f2f = 2,f&f = 1,f&fTD = 3 ...而我得到2f2f = 1,f&f = 2,f&fTD = 3 – 2015-04-02 13:40:48