none
Eliminar filas duplicadas en la vista y evitar la replicacion de resultados en campos individuales RRS feed

  • Pregunta

  • Hola, tengo un problema que me cuesta entender, resulta que quiero evitar que la suma de RegistroUsuario.NumeroAlumnos donde RegistroUsuario.IdActividadFK != 2 afecte a las filas que no cumplen con la condicion, como lo es en el caso de IdRegistroUsuario = 6, me coloca un 70 siendo IdActividadFK = 2, por lo tanto no se cumple la condicion de que sea != 2, no se que esta pasando ahi!! Pasa con ambas sumas en las columnas TotalUsuarios y TotalUsuariosEnPractica. Además de que tengo otro problema, es la duplicacion de los campos IdRegistroUsuario = 4 y 5 donde los valores individuales de cada uno era de 40 y 30, y con la suma es el dato que se ve en la columna TotalUsuarios , me gustaria quedarme con uno solo que tuviera el total pero no se como expresarlo. Por favor necesito ayuda!

    SELECT
    		RegistroUsuario.Fecha,
    		RegistroUsuario.IdRegistroUsuario,
    		RegistroUsuario.IdTallerLabFK, 
    		TallerLaboratorio.Nombre as TallerLaboratorio,		
    		RegistroUsuario.IdCarreraFK, 
    		Carrera.Nombre as Carrera,		
    		RegistroUsuario.NumeroAlumnos,
    		(case when RegistroUsuario.IdActividadFK != 2 then RegistroUsuario.NumeroAlumnos else 0 end) as Usuarios,
    		(case when RegistroUsuario.IdActividadFK = 2 then RegistroUsuario.NumeroAlumnos else 0 end) as UsuariosEnPractica,
    		sum((case when RegistroUsuario.IdActividadFK != 2 then RegistroUsuario.NumeroAlumnos else 0 end)) over(partition by SCOUTL.RegistroUsuario.IdTallerLabFK, SCOUTL.RegistroUsuario.IdCarreraFK) as TotalUsuarios,		
    		sum((case when RegistroUsuario.IdActividadFK = 2 then RegistroUsuario.NumeroAlumnos else 0 end)) over(partition by SCOUTL.RegistroUsuario.IdTallerLabFK, SCOUTL.RegistroUsuario.IdCarreraFK) as TotalUsuariosEnPractica,	
    		RegistroUsuario.IdActividadFK,                         
    		Actividad.Nombre as Actividad, 		 		
    		RegistroUsuario.IdDocenteFK, 
    		Docente.NombreCompleto as Docente
    	FROM SCOUTL.Actividad INNER JOIN
             SCOUTL.RegistroUsuario ON SCOUTL.Actividad.IdActividad = SCOUTL.RegistroUsuario.IdActividadFK INNER JOIN
             SCOUTL.Carrera ON SCOUTL.RegistroUsuario.IdCarreraFK = SCOUTL.Carrera.IdCarrera INNER JOIN
             SCOUTL.Docente ON SCOUTL.RegistroUsuario.IdDocenteFK = SCOUTL.Docente.IdDocente INNER JOIN
             SCOUTL.TallerLaboratorio ON SCOUTL.RegistroUsuario.IdTallerLabFK = SCOUTL.TallerLaboratorio.IdTallerLab
    	where SCOUTL.RegistroUsuario.Fecha between '2018-01-16' and '2018-02-19'	
    	group by 
    		RegistroUsuario.Fecha,
    		RegistroUsuario.IdRegistroUsuario,
    		RegistroUsuario.IdTallerLabFK, 
    		TallerLaboratorio.Nombre,		
    		RegistroUsuario.IdCarreraFK, 
    		Carrera.Nombre,				
    		RegistroUsuario.NumeroAlumnos,		
    		RegistroUsuario.IdActividadFK, 
    		Actividad.Nombre, 		 		
    		RegistroUsuario.IdDocenteFK, 
    		Docente.NombreCompleto
    	order by SCOUTL.RegistroUsuario.IdTallerLabFK, SCOUTL.RegistroUsuario.IdCarreraFK


    jueves, 1 de marzo de 2018 3:54

Respuestas

Todas las respuestas