【发布时间】:2011-09-25 09:53:32
【问题描述】:
我正在尝试实现一个排序过程,该过程将根据下拉列表的值进行排序。发生的情况是,在对列表进行排序时,NULL 字段将被指定的替换值替换,在本例中为 ''。这是首先排序的,因为我们是按升序排序的,现在我想用空值 LAST 升序排序 BUT。我该如何实现呢?
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
编辑:运行 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
【问题讨论】:
-
@Matthew Cox tsql 标签向我表明它的 SQL Server。虽然哪个版本可以帮助
标签: sql sql-server tsql sorting stored-procedures