2012-01-12 2 views

ответ

3

SQL Server только позволяет ORDER BY столбцов в списке SELECT когда DISTINCT указываются как в противном случае, не выбранный столбец может иметь отображение более чем одно значения для конкретной строки в возвращенных результатах.

Если вы знаете, что это не так, вы можете использовать CTE.

;WITH CTE 
    AS (SELECT DISTINCT foo, 
         bar 
     FROM T) 
SELECT foo 
FROM CTE 
ORDER BY bar 

Если это не работает для вас, потому что есть на самом деле несколько возможных bar значения для каждого foo, то вы должны сказать это однозначно, какое значение использовать для заказа целей. например используя вместо этого GROUP BY.

SELECT foo 
FROM T 
GROUP BY foo 
ORDER BY MIN(bar) 
+0

+1 это хороший обходной путь! Я собираюсь это запомнить. – Aaron

+0

Большое вам спасибо –

Смежные вопросы