ORDER BY в SQL Server 2005 - PullRequest
       0

ORDER BY в SQL Server 2005

1 голос
/ 06 декабря 2010

Я должен выполнить различные сортировки, в зависимости от значения столбца. Если столбец b равен 1, то следующий запрос:

select * from a

Если столбец b равен 0, то следующий запрос:

select * from a order by c desc, b

Как это сделать одним запросом?

Ответы [ 3 ]

3 голосов
/ 06 декабря 2010
SELECT * INTO #b1 FROM a WHERE b = 1
SELECT * INTO #b2 FROM a WHERE b = 0 ORDER BY 1 Desc

SELECT * FROM #b1

UNION ALL

SELECT * FROM #b2

ORDER BY b DESC

DROP TABLE #b1
DROP TABLE #b2
2 голосов
/ 06 декабря 2010
ORDER BY 
    CASE WHEN b = 0 THEN C END DESC, 
    CASE WHEN b = 0 THEN b END
1 голос
/ 06 декабря 2010

Поскольку вы не указали критерии порядка для случая b = 0, а в T-SQL нет выражения для физического порядка, здесь необходимо использовать динамический sql. Пожалуйста, сначала проверьте, в каком порядке вы хотите результаты для b = 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...