最后排序空值而不是第一个

JF *_*ieu 17 sql t-sql sql-server sorting stored-procedures

我正在尝试实现一个排序过程,它将根据下拉列表的值进行排序.发生的情况是,在对列表进行排序时,在这种情况下,NULL字段将被指定的替换值替换''.这是首先排序,因为我们正在按升序排序,现在我想要升序排序,最后是空值.我怎么能实现这个?

ORDER BY l.IsActive DESC, 
        CASE WHEN @SortOrder = 1 THEN n.DisplayName
             WHEN @SortOrder = 2 THEN CASE ec.IsEquipmentRelated
                                            WHEN  1 THEN ISNULL(el.ShopID,'') + 
                                                    ISNULL(ec.EquipmentAbbr,'') + 
                                                    ISNULL(el.ClassSequenceNumber,'') + 
                                                    ISNULL(el.EquipmentComponent,'') + 
                                                    ISNULL(el.CompSequenceNumber,'')
                                            WHEN  0 THEN ISNULL(ec.EquipmentAbbr,'')
                                            ELSE NULL
                                      END
             ELSE l.DisplayName
        END
Run Code Online (Sandbox Code Playgroud)

编辑:运行MS SQL Server 2008/T-SQL

编辑: @Joe Stefanelli,我试过这个,它没有编译:

ORDER BY l.IsActive DESC, 
    CASE WHEN @SortOrder = 0 THEN l.DisplayName
         WHEN @SortOrder = 1 THEN CASE WHEN n.DisplayName = '' THEN 2 ELSE 1 END, n.DisplayName
         WHEN @SortOrder = 2 THEN 
                                  CASE ec.IsEquipmentRelated
                                        WHEN  1 THEN ISNULL(el.ShopID,'') + 
                                            ISNULL(ec.EquipmentAbbr,'') + 
                                            ISNULL(el.ClassSequenceNumber,'') + 
                                            ISNULL(el.EquipmentComponent,'') + 
                                            ISNULL(el.CompSequenceNumber,'')
                                        WHEN  0 THEN ISNULL(ec.EquipmentAbbr,'')
                                        ELSE NULL
                                  END
     END
Run Code Online (Sandbox Code Playgroud)

Joe*_*lli 31

...
ORDER BY CASE WHEN YourField = '' THEN 2 ELSE 1 END, YourField
Run Code Online (Sandbox Code Playgroud)