2013-03-03 5 views
2

я хочу дату сортировки, и использовать этот код:по возрастанию Дата сортировать

SELECT  TID, TName, TOrder 
FROM   tblOrder 
ORDER BY TOrder 

Результат:

1 Maikel нуль

5 Emil нуль

4 Kabol 1

3 samin 2

2 mihad 3

, но я хочу этот результат:

4 Kabol 1

3 Samin 2

2 mihad 3

1 Maikel нуль

5 emil null

, пожалуйста, помогите мне в восходящем порядке.

+0

Какие базы данных вы работаете? –

ответ

5
SELECT TID, TName, TOrder 
FROM tblOrder 
ORDER BY CASE WHEN TORDER IS NULL THEN 1 ELSE 0 END, 
      TOrder 

Linq:

var x = from a in tblOrder 
     orderby (a.TORDER == null ? 1 : 0), a.TORDER 
     select a 
+0

woooooooow :-) его ok :-) пожалуйста, конвертируйте этот код в LINQ.thx –

+0

@BabakSaeedi см. Мое обновление. –

0

Вы можете использовать COALESCE:

SELECT  TID, TName, TOrder 
FROM   tblOrder 
ORDER BY COALESCE(TOrder,'9999-12-31 23:59:59.997') 
0

Это самый простой способ для SQL Server:

SELECT TID, TName, TOrder 
FROM tblOrder 
ORDER BY isnumeric(TOrder) DESC, TOrder 

Для других баз данных, таких как MySQL и PostgreSQL, есть простое решение:

SELECT TID, TName, TOrder 
FROM tblOrder 
ORDER BY TOrder IS NULL, TOrder 

Для Oracle и PostgreSQL, это работает, и воспользуется возможный индекс на TOrder:

SELECT TID, TName, TOrder 
FROM tblOrder 
ORDER BY TOrder ASC NULLS LAST 
0

Посмотрите на этот запрос и Fiddle

SELECT TID, TName, TOrder INTO #TempTab 
FROM   tblOrder 
WHERE TOrder IS NOT NULL 
ORDER BY TOrder 
SELECT * FROM #TempTab 
UNION ALL 
SELECT  TID, TName, TOrder 
FROM   tblOrder 
WHERE TOrder IS NULL; 
Смежные вопросы