Saltar al contenido

Error de SQL con Ordenar por en Subconsulta

Contamos con tu apoyo para compartir nuestras secciones sobre las ciencias informáticas.

Solución:

Este es el error que obtienes (énfasis mío):

La cláusula ORDER BY no es válida en vistas, funciones en línea, tablas derivadas, subconsultas y expresiones de tablas comunes. a menos que también se especifique TOP o FOR XML.

Entonces, ¿cómo puedes evitar el error? Al especificar TOP, sería una posibilidad, supongo.

SELECT (
  SELECT TOP 100 PERCENT
  COUNT(1) FROM Seanslar WHERE MONTH(tarihi) = 4
  GROUP BY refKlinik_id
  ORDER BY refKlinik_id
) as dorduncuay

Además del hecho de que order by no parece tener sentido en su consulta… Para usar order by en una subselección, deberá usar TOP 2147483647.

SELECT (
  SELECT TOP 2147483647
  COUNT(1) FROM Seanslar WHERE MONTH(tarihi) = 4
  GROUP BY refKlinik_id
  ORDER BY refKlinik_id
) as dorduncuay

Tengo entendido que “TOP 100 PERCENT” ya no garantiza pedidos a partir de SQL 2005:

En SQL Server 2005, la cláusula ORDER BY en una definición de vista se usa solo para determinar las filas que devuelve la cláusula TOP. La cláusula ORDER BY no garantiza resultados ordenados cuando se consulta la vista, a menos que también se especifique ORDER BY en la propia consulta.

Consulte los cambios importantes de SQL Server 2005

Espero que esto ayude, Patricio

Si está trabajando con SQL Server 2012 o posterior, ahora es fácil de solucionar. Añadir un offset 0 rows:

SELECT (
  SELECT
  COUNT(1) FROM Seanslar WHERE MONTH(tarihi) = 4
  GROUP BY refKlinik_id
  ORDER BY refKlinik_id OFFSET 0 ROWS
) as dorduncuay

Si te gustó nuestro trabajo, puedes dejar un ensayo acerca de qué te ha impresionado de esta reseña.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *