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.