Разница в дате сортировки в SQL

Я сейчас пишу:

Select datediff(hh,getutcdate(), End_Date) as "Duration" 
from MasterTable 
order by Duration

Получить разницу значений часов в порядке возрастания. Я получаю вывод,

продолжительность
--------
    -259
    -210
       5
      10
      22
      35
      75
     105
     235

Но я хочу, заказ должен быть сделан на основе положительных чисел и отрицательных чисел часовых значений. Итак, мне нужен вывод как:

продолжительность
--------
       5
      10
      22
      35
      75
     105
     235
    -259
    -210

Есть ли твик для выполнения такой задачи? Заранее спасибо.

3 ответа

Решение

Если вам нужна последовательность, как вы указали в вопросе, где сначала находятся все положительные числа в порядке возрастания, а затем отрицательные числа в порядке возрастания:

Select datediff(hh,getutcdate(),End_Date) as "Duration" from MasterTable
order by CASE WHEN Duration >= 0 THEN 0 ELSE 1 END,Duration

Попробуй это,

Select Abs(datediff(hh,getutcdate(),End_Date)) as "Duration" from MasterTable order by Abs(Duration)

Понимание того, что вам нужно, это игнорировать знак Duration:

Попробуйте использовать ABS:

Select datediff(hh,getutcdate(),End_Date) as "Duration" from MasterTable order by ABS(Duration)
Другие вопросы по тегам