2014-02-07 21 views
0

我在下面的查詢中添加了不同的關鍵字。但是,如果指定了SELECT DISTINCT,那麼獲得像「ORDER BY項目」這樣的錯誤必須出現在選擇列表中。「如果在使用不同的字段時指定了SELECT DISTINCT,則ORDER BY項必須出現在選擇列表中。

SELECT @cols = STUFF((SELECT distinct TOP 100 PERCENT '],[' + t2.Description 
    FROM table1 AS t2 where [email protected] 
    ORDER BY '],[' + CONVERT(Varchar, t2.SortOrder) 
    FOR XML PATH('') 
    ), 1, 2, '') + ']'  
+0

當'something'不在'SELECT DISTINCT'列表中時,'ORDER BY something'沒有意義。 –

回答

0

什麼是不清楚的錯誤信息?

您選擇

'],[' + t2.Description 

,你的排序上

'],[' + CONVERT(Varchar, t2.SortOrder) 

所以,你的ORDER BY項是不是在你的SELECT。

我猜測SQL不知道如何區分唯一行,如果重複無法找到以有意義的方式(不知道,或者說,拒絕這樣做,因爲這將是非常低效的。)

如果您ORDER BY可以用來定位重複條目,消除重複記錄很容易(也是快速)。但是你在一個不同的領域一起訂購,所以爲了找到重複,每個記錄都需要搜索完整列表,以確定它是否有重複。

由於您是XML的選擇,我不認爲您可以輕鬆地將您的訂單通過您的選擇條款。

所以,你有一些其他的選項:(?是不是真的有必要,你的XML是有序的。如果是這樣,包括SortOrder的在你的XML屬性也許)

  • 一滴順序

  • 降的不同(你將不得不從後面將XML刪除重複的節點)

  • 沒有重複創建臨時表的第一,並從那裏選擇有序的數據。

相關問題