Использование SQL Server 2008 ...
У меня проблемы с попыткой упорядочить строки в определенном порядке, по которому я бы хотел, чтобы они были упорядочены. Я нашел несколько примеров, в которых используется предложение ORDER BY CASE
, но я не уверен, что использование этого метода даст результат, которого я хочу, поэтому я прихожу в сообщество!
Вот что у меня есть:
Сначала я выбираю, если он существует, отдельный год, который равен текущему году:
IF EXISTS(SELECT DISTINCT [Year]
FROM Assessment WHERE ProjectCode = @ProjectCode AND [Year] = DATENAME(YEAR, GETDATE()))
SELECT DISTINCT [Year]
FROM Assessment WHERE ProjectCode = @ProjectCode
Но, тогда я нахожу некоторую путаницу в упорядочении результатов. Я хотел бы установить текущий год для первой строки, возвращаемой с помощью предложения ORDER BY
, а затем упорядочить оставшиеся возвращенные годы в порядке убывания, вот что у меня получилось:
ORDER BY (CASE WHEN [Year] = (DATENAME(YEAR, GETDATE())) THEN 1
ELSE 100 END) ASC, [Year] desc
Далее, если текущий год не содержится в запросе, выберите каждый год и упорядочите по годам по убыванию.
ELSE
SELECT DISTINCT [Year]
FROM Assessment WHERE ProjectCode = @ProjectCode
ORDER BY [Year] desc
Спасибо, заранее!