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)