Разница в дате сортировки в 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)