2011-02-03 59 views
-1

我在同時使用「order by」&「distinct」時遇到問題。例如,我有以下幾點:SQL差異/排序錯誤

DECLARE @fieldSort varchar(100) = 'ref' 

SELECT DISTINCT EXT_Design_Standard_ID 
FROM EXT_Design_Standard_Change_Log 
ORDER BY CASE 
    WHEN @fieldSort ='REF' THEN 
      EXT_Design_Standard_ID 
    END 

我得到的錯誤:

ORDER BY項目如果指定SELECT DISTINCT必須出現在選擇列表中。

任何人都知道如何解決這個問題?

+0

<30%的接受... – 2011-02-03 17:18:04

回答

0

不要在子選擇和順序DISTINCT通過在外選擇

SELECT * from (SELECT distinct...) order by ... 
0
DECLARE @fieldSort varchar(100) = 'ref'; 

with cte As 
(
SELECT distinct  EXT_Design_Standard_ID 
from EXT_Design_Standard_Change_Log 
) 
SELECT * 
FROM cte 
ORDER BY 
    CASE WHEN @fieldSort ='REF' 
    THEN EXT_Design_Standard_ID END 

或使用〜10個問題GROUP BY

SELECT EXT_Design_Standard_ID 
FROM EXT_Design_Standard_Change_Log 
GROUP BY EXT_Design_Standard_ID 
ORDER BY 
    CASE WHEN @fieldSort ='REF' 
    THEN EXT_Design_Standard_ID END