El SP es el siguiente
Código:
En algun lado encontre que poniendole @OrderBySort despues del END del CASE que esta en el ORDER BY, deberia funcionar, pero el Analizador de consulta me da error justo en esa linea. Estimo que el ejemplo que encontre no es para SQLSERVER 2005 que es con lo que estoy trabajando.CREATE PROCEDURE [dbo].[GetArticulosPage] @PageSize int, @PageNumber int, @OrderBy varchar(50), @OrderBySort varchar(50) AS SELECT id_articulo, nombre, codigo, linea, padre, razonSocial FROM ( SELECT a.id_articulo, l.linea, l.padre, a.nombre, ap.codigo, p.razonSocial, ROW_NUMBER() OVER (ORDER BY a.nombre, a.id_articulo) AS RowNumber FROM ARTICULO a JOIN ARTICULO_PROVEEDOR ap ON a.id_articulo = ap.id_articulo JOIN LINEA l ON a.id_linea = l.id_linea JOIN PROVEEDOR p ON ap.id_proveedor = p.id_proveedor ) AS Articulo WHERE RowNumber BETWEEN @PageSize * @PageNumber + 1 AND @PageSize * (@PageNumber + 1) ORDER BY CASE WHEN @OrderBy = 'razonSocial' THEN razonSocial WHEN @OrderBy = 'linea' THEN linea ELSE nombre END
Alguien tiene alguna idea de como hacerlo??
Otro problema que tengo es la de poner mas clausulas WHERE dependiendo de algunos parametros que le mando, especificamente para filtrar los resultados los cuales se eligen dinamicamente, por eso es que pueden o no estar.
Alguien sabe si se puede usar algun tipo de IF dentro del WHERE o al go parecido?
Saludos, y gracias de antemano