Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/06/2013, 14:01
chueke
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 13 años, 8 meses
Puntos: 2
Order by / Case

Gente, tengo la siguiente consulta SQL:

Código SQL:
Ver original
  1. SELECT RXFAM1, RXFAM2, RXFAM3, PSPREC, VMVNNM
  2.     FROM
  3.     (SELECT RXFAM1, RXFAM2, RXFAM3, PSPREC, VMVNNM, ROW_NUMBER()
  4.     OVER
  5.     (ORDER BY
  6.     -- Orden x marca
  7.     CASE WHEN @marc = 'ok'
  8.     THEN VMVNNM END ASC,
  9.     -- Orden x precio descendente
  10.     CASE WHEN @prc = 'desc'
  11.     THEN PSPREC END DESC,
  12.     -- Orden x precio ascendente
  13.     CASE WHEN @prc = 'asc'
  14.     THEN PSPREC END ASC
  15.     )
  16.     AS Recursos
  17.     FROM dbo.Recursos WHERE CPA01 LIKE  '%' + @palabra + '%')
  18.     AS Resultados
  19.     WHERE Recursos BETWEEN 8 * @PageNumber  + 1 AND 8 * (@PageNumber + 1)

Hasta aqui todo bien. Esta consulta busca los registros correspondientes mediante un LIKE en la base de datos, los pagina y los ordena mediante el ORDER BY.
En un store procedure comun esto funcionaba bien, pero cuando lo quiero implementar dentro del string en un sp_executesql me arroja el siguiente error:

"Se especificó una expresión no booleana en un contexto donde se esperaba una condición, cerca de 'Recursos'"

Noto que el error esta en los CASES del ORDER BY, cuando dejo uno solo la consulta funciona bien.
Intente cambiar la sentencia decenas de veces pero no consigo que funcione.
Alguna sugerencia, que puede estar mal?