SQL отличается / порядок по ошибке - PullRequest
0 голосов
/ 03 февраля 2011

У меня проблема при одновременном использовании «упорядочить по» и «отличить».Например, у меня есть следующее:

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.

Кто-нибудь знает, как с этим разобраться?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2011
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

Или используйте 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
0 голосов
/ 03 февраля 2011

Сделайте DISTINCT в подвыборах и ORDER BY во внешнем выборе

SELECT * from (SELECT distinct... ) order by ...
...