Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/01/2010, 08:24
yz!
Invitado
 
Mensajes: n/a
Puntos:
Registros aleatorios sobre consulta de unión

Buenas,

Tengo dos consultas unidas por un UNION y necesito ordenar aletoriamente el total de los registros.

Al agregarle al final el ORDER BY NEWID() me devuelve un error que pide que la columna este incluida en la clausula SELECT.

¿Alguna idea?

Código:
(
SELECT Formacion.Id_Curso, Formacion.Visitas, Formacion.FechaAlta, Formacion.Puja, PorcentajeInscritos = CAST((SELECT COUNT(Id) FROM Formacion_Inscritos WHERE Formacion_Inscritos.Id_Curso = Formacion.Id_Curso) / CAST((CASE Formacion.Visitas WHEN 0 THEN 1 ELSE Formacion.Visitas END) AS DECIMAL(9,3)) * 100 AS DECIMAL(9,3)), Formacion.NombreCurso AS Curso, EmpresasCursos.Nombre AS Centro, EmpresasCursos.Poblacion, tbProvincias.Descripcion AS Provincia, EmpresasCursos.Logo 
FROM Formacion INNER JOIN EmpresasCursos ON Formacion.Id_Empresa = EmpresasCursos.Id_Empresa 
INNER JOIN tbProvincias ON EmpresasCursos.Provincia = tbProvincias.Id 
WHERE Formacion.Id_Delegacion = 0 AND Formacion.Sector IN (5,6,7,9,13) AND Formacion.Puja IN (SELECT TOP 4 Formacion.puja FROM Formacion ORDER BY Formacion.Puja DESC)
) UNION (
SELECT Formacion.Id_Curso, Formacion.Visitas, Formacion.FechaAlta, Formacion.Puja, PorcentajeInscritos = CAST((SELECT COUNT(Id) FROM Formacion_Inscritos WHERE Formacion_Inscritos.Id_Curso = Formacion.Id_Curso) / CAST((CASE Formacion.Visitas WHEN 0 THEN 1 ELSE Formacion.Visitas END) AS DECIMAL(9,3)) * 100 AS DECIMAL(9,3)), Formacion.NombreCurso AS Curso, Formacion_Delegaciones.Nombre AS Centro, Formacion_Delegaciones.Poblacion, tbProvincias.Descripcion AS Provincia, EmpresasCursos.Logo 
FROM Formacion INNER JOIN EmpresasCursos ON Formacion.Id_Empresa = EmpresasCursos.Id_Empresa 
INNER JOIN Formacion_Delegaciones ON Formacion.Id_Delegacion = Formacion_Delegaciones.Id_Delegacion 
INNER JOIN tbProvincias ON Formacion_Delegaciones.Provincia = tbProvincias.Id 
WHERE Formacion.Id_Delegacion <> 0 AND Formacion.Sector IN (5,6,7,9,13) AND Formacion.Puja IN (SELECT TOP 4 Formacion.puja FROM Formacion ORDER BY Formacion.Puja DESC)
) 
ORDER BY Formacion.Puja DESC, PorcentajeInscritos DESC, Formacion.Visitas DESC, Formacion.FechaAlta DESC