2013-03-03 104 views
2

我想排序日期,并使用此代码:升序排序日期

SELECT  TID, TName, TOrder 
FROM   tblOrder 
ORDER BY TOrder 

结果:

1 maikel空

5埃米尔空

4 kabol 1

3 samin 2

2 mihad 3

但我想这样的结果:

4 kabol 1

3 samin 2

2 mihad 3

1 maikel空

5 emil null

请帮我升序排序。

+0

的数据库是你的工作? – 2013-03-03 07:51:08

回答

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 :-)其正确:-)请将此代码转换为LINQ.thx – 2013-03-03 07:44:10

+0

@BakakSaeedi查看我的更新。 – 2013-03-03 07:50:45

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;