Я пытаюсь реализовать процедуру сортировки, которая будет сортировать по значению раскрывающегося списка. В результате сортировки списка поля NULL будут заменены указанным значением замены, в данном случае ''
. Сначала это сортируется, потому что мы сортируем по возрастанию, теперь я хочу отсортировать по возрастанию НО с нулевыми значениями LAST Как я мог это реализовать?
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
Edit: @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