Este es mi problema: estoy intentando hacer un procedimiento almacenado en SQL que realice una consulta a la bd. El sp es llamado desde una app en c# al darle click a un botón.
El sp recibe el string @ordenamiento que puede ser 'e.idEmpleado asc', 'e.idEmpleado desc', 'CantidadEmpleados asc' o 'CantidadEmpleados desc'.
Encontré la manera de realizar el ORDER BY dinámico, pero no funciona y creo que es porque esta recibiendo dos expresiones (ej.: e.idEmpleado y asc)
Código
CREATE PROCEDURE consultaCorp4 ( @ordenamiento VARCHAR ) AS BEGIN SET NOCOUNT ON; SELECT e.idPlanta,COUNT(e.idEmpleado) AS CantidadEmpleados,SUM(dp.MontoBruto) AS SalariosBrutos,avg(dp.MontoBruto) AS SalarioBrutoPromedio FROM dbo.empleados e INNER JOIN dbo.detalle_planillas dp ON (e.idEmpleado=dp.idEmpleado) GROUP BY e.idPlanta ORDER BY CASE @ordenamiento WHEN 'e.idPlanta asc' THEN e.idPlanta ASC WHEN 'e.idPlanta desc' THEN e.idPlanta DESC WHEN 'CantidadEmpleados asc' THEN CantidadEmpleados ASC WHEN 'CantidadEmpleados desc' THEN CantidadEmpleados DESC END END GO
De qué manera podría hacer la consulta para que funcione el ORDER BY dinámico?