sky丶斌
侠客
侠客
  • 最后登录2019-08-13
  • 发帖数23
阅读:244回复:2

[sql server]Order By高级使用

楼主#
更多 发布于:2019-08-02 09:09
1、Order By 时通过CASE WHEN 进行判断后排序


需求:当F_EnvirState=0时排第二;F_EnvirState=1时排第一.....


SELECT
        F_ENVIRGRANTDATE
        F_ENVIRSTATE
        FROM T_Envir_EnvironmentalLogo
        ORDER BY    
                CASE
                    WHEN F_EnvirState = 0 THEN --未发放
                    2
                    WHEN F_EnvirState = 1 THEN --已发放
                    1
                    WHEN F_EnvirState = 2 THEN --已注销    
                    3
                    WHEN F_EnvirState IS NULL THEN
                    4
        END ,
                F_ENVIRGRANTDATE  desc




如果日期也需要判断状态后排序时,排序sql如下:


   ORDER BY    
                CASE
                    WHEN F_EnvirState = 0 THEN --未发放
                    2
                    WHEN F_EnvirState = 1 THEN --已发放
                    1
                    WHEN F_EnvirState = 2 THEN --已注销    
                    3
                    WHEN F_EnvirState IS NULL THEN
                    4
        END ,


    CASE    
                   WHEN F_EnvirState = 0 THEN
                   F_ENVIRGRANTDATE
       END desc,
               CASE    
                   WHEN F_EnvirState = 1 THEN
                   F_ENVIRGRANTDATE
       END desc,
               CASE    
                   WHEN F_EnvirState = 2 THEN    
                   F_ENVIRGRANTDATE
       END desc

最新喜欢:

doubleyongdouble...
sky丶斌
侠客
侠客
  • 最后登录2019-08-13
  • 发帖数23
沙发#
发布于:2019-08-13 14:06
doubleyong:哈哈,666回到原帖
哈哈
doubleyong
管理员
管理员
  • 最后登录2019-08-26
  • 发帖数636
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
板凳#
发布于:2019-08-04 10:55
哈哈,666
知识需要管理,知识需要分享
游客


返回顶部