case when问题
gold是等级         expire_date是到期时间                        
 根据前面的查询是按等级后再按到期时间,这样的话高等级的过期的人就在低等级没过期的人的前面.                        
 现在要做成         过期的都要到后面显示         无论等级是多少         而没过期的还是正常按等级及到期时间排列            
 Create         Table         #TEST          
       (ID         Int,          
             gold   Int,          
             expire_date   DateTime)          
       Insert         #TEST         Select         1,2, '2006-06-30 '          
       Union         All         Select         2,3, '2006-06-30 '          
       Union         All         Select         3,5, '2006-05-30 '          
       Union         All         Select         4,6, '2006-06-12 '          
       Union         All         Select         5,10, '2006-07-30 '          
       Union         All         Select         6,1, '2006-08-30 '          
       Union         All         Select         6,1, '2008-08-30 '       
       Union         All         Select         6,1, '2009-08-30 '         
 select         top         100         *         from         [#TEST]         order         by         (Case         When         expire_date> =GetDate()         Then      0         Else      1      End),         gold         desc,expire_date         desc            
 Case         When         expire_date> =GetDate()         Then      0         Else      1      End这个表达式是什么意思,是不是当expire_date> =GetDate()时上面语句就是order   by   0,gold   desc,expire   desc要不就是order   by   1,gold   desc,expire   desc
------解决方案--------------------等于这句 
 select top 100 *, 
   (Case When expire_date> =GetDate() Then 0 Else 1 End) AS 是否过期 
 from [#TEST] 
 order by 是否过期, gold desc, expire_date desc