Estoy tratando de implementar un procedimiento de clasificación que se ordenará de acuerdo con el valor de una lista desplegable. Lo que sucede es que cuando se ordena la lista, los campos NULL se reemplazarán por el valor de reemplazo especificado, en este caso ''
. Esto se está ordenando primero porque estamos ordenando de forma ascendente, ahora me gustaría ordenar de forma ascendente PERO con valores nulos LAST. ¿Cómo podría implementar esto?Ordenando valores vacíos al final en lugar de primero
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
Editar: Ejecución de MS SQL Server 2008/T-SQL
Editar: @ Joe Stefanelli, he intentado esto, no es la compilación:
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
¿Qué DB estás usando? –
@Matthew Cox la etiqueta tsql me indica que es su servidor SQL. Aunque la versión podría ayudar –