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

Libras, finalmente logre que funcione con la siguiente sentencia:


Código SQL:
Ver original
  1. SELECT * FROM (SELECT RXFAM1, RXFAM2, RXFAM3, PSPREC, VMVNNM, ROW_NUMBER()
  2. OVER (ORDER BY CASE WHEN @marc = ''ok'' THEN VMVNNM END ASC, CASE WHEN @prc = ''DESC'' THEN PSPREC END DESC, CASE WHEN @prc = ''ASC'' THEN PSPREC END ASC) AS RowNum FROM Recursos
  3. WHERE
  4. CPA01 LIKE @clave + ''%'')
  5. AS Paginacion WHERE RowNum BETWEEN 8 * @PageNumber  + 1 AND 8 * (@PageNumber + 1)

Utilizando la misma estructura que funciono (lo que acabo de poner) modifique el LIKE por varios AND en otro SQL, e increiblemente vuelvo a mostrar el mismo error de antes.

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

El otro SQL:

Código SQL:
Ver original
  1. SELECT * FROM (SELECT RXFAM1, RXFAM2, RXFAM3, PSPREC, VMVNNM, ROW_NUMBER()
  2. OVER (ORDER BY CASE WHEN @marc = ''ok'' THEN VMVNNM END ASC, CASE WHEN @prc = ''DESC'' THEN PSPREC END DESC, CASE WHEN @prc = ''ASC'' THEN PSPREC END ASC) AS RowNum FROM Recursos
  3. WHERE
  4. (RXFAM1 = COALESCE(NULLIF(@ref1, ''''), RXFAM1)
  5. AND
  6. RXFAM2 = COALESCE(NULLIF(@ref2, ''''), RXFAM2)
  7. AND
  8. RXFAM3 = COALESCE(NULLIF(@ref3, ''''), RXFAM3))
  9. AS Paginacion WHERE RowNum BETWEEN 8 * @PageNumber  + 1 AND 8 * (@PageNumber + 1)

Veo que el problema surge cuando pongo el tercer AND (tengo que poner seis en total). Esto me desorienta por completo, alguna idea?? desde ya, gracias.