none
Mostrar todos los datos de varias tablas RRS feed

  • Pregunta

  • Excelente día, tengo una consulta la cual es la siguiente

    SELECT p.id, resultado, (count(resultado)*100)/(SELECT COUNT(*) FROM IAssesment_Evaluaciones WHERE area='TlP/LOP2.1') count FROM IAssesment_Evaluaciones e INNER JOIN IAssesment_Resultados r ON e.id=r.id_evaluacion LEFT OUTER JOIN IAssesment_Tipo_Resultados t ON t.id=r.resultado INNER JOIN IAssesment_Preguntas p ON r.id_pregunta=p.id WHERE area='TlP/LOP2.1' GROUP BY resultado,p.id ORDER BY p.id,resultado

    Esta consulta muestra bien los datos

    id    resultado    count
    1    2             100
    2    2             100
    3    2             50
    3    3             50
    4    1             33
    4    2             66
    5    1             50
    5    2             33
    5    3             16
    6    1             16
    6    2             83
    7    1             33
    7    2             16
    7    3             50
    8    1             50
    8    2             33
    8    3             16
    9    1             83
    9    3             16
    10    1             83
    10    3             16
    11    1             33
    11    2             16
    11    3             50
    12    1             66
    12    3             33
    13    1             100
    14    1             16
    14    2             33
    14    3             50
    15    1             50
    15    2             50
    16    1             66
    16    2             33
    17    1             50
    17    2             50

    Mi problema es que la tabla de

    IAssesment_Tipo_Resultados

    tiene 3 tipos de resultados (1,2,3)

    Lo que necesito es que mi consulta me regrese los 3 tipos de valores aunque no tenga ningun valor

    como ejemplo de los resultados de la consulta anterior, este es el resultado que necesito

    id    resultado    count
    1    2             100

    1 1          0

    1 3          0

    Gracias por su ayuda

    miércoles, 21 de marzo de 2018 0:05

Respuestas

  • Intenta la siguiente consulta:

    SELECT 
    	p.id, t.id, 
    	CASE 
    		WHEN r.resultado = t.id THEN 
    			(COUNT(r.resultado) * 100) / 
    				(SELECT COUNT(*) FROM IAssesment_Evaluaciones WHERE area = 'TlP/LOP2.1') 
    		ELSE 0
    	END Cuenta
    FROM 
    	IAssesment_Evaluaciones e 
    	INNER JOIN IAssesment_Resultados r ON e.id = r.id_evaluacion 	
    	INNER JOIN IAssesment_Preguntas p ON r.id_pregunta = p.id 
    	CROSS APPLY (SELECT id FROM IAssesment_Tipo_Resultados) t 
    WHERE e.area = 'TlP/LOP2.1' 
    GROUP BY p.id, r.resultado, t.id
    ORDER BY p.id, r.resultado, t.id;
    GO

    • Marcado como respuesta JlarzateC miércoles, 21 de marzo de 2018 14:54
    • Desmarcado como respuesta JlarzateC miércoles, 21 de marzo de 2018 14:54
    • Propuesto como respuesta Tonatiuh AbregoModerator miércoles, 21 de marzo de 2018 18:49
    • Marcado como respuesta JlarzateC miércoles, 21 de marzo de 2018 20:02
    • Desmarcado como respuesta JlarzateC miércoles, 21 de marzo de 2018 22:51
    • Marcado como respuesta Tonatiuh AbregoModerator lunes, 26 de marzo de 2018 17:05
    • Desmarcado como respuesta JlarzateC lunes, 9 de abril de 2018 16:03
    • Marcado como respuesta Pablo RubioModerator lunes, 8 de octubre de 2018 21:15
    miércoles, 21 de marzo de 2018 3:42

Todas las respuestas

  • Intenta la siguiente consulta:

    SELECT 
    	p.id, t.id, 
    	CASE 
    		WHEN r.resultado = t.id THEN 
    			(COUNT(r.resultado) * 100) / 
    				(SELECT COUNT(*) FROM IAssesment_Evaluaciones WHERE area = 'TlP/LOP2.1') 
    		ELSE 0
    	END Cuenta
    FROM 
    	IAssesment_Evaluaciones e 
    	INNER JOIN IAssesment_Resultados r ON e.id = r.id_evaluacion 	
    	INNER JOIN IAssesment_Preguntas p ON r.id_pregunta = p.id 
    	CROSS APPLY (SELECT id FROM IAssesment_Tipo_Resultados) t 
    WHERE e.area = 'TlP/LOP2.1' 
    GROUP BY p.id, r.resultado, t.id
    ORDER BY p.id, r.resultado, t.id;
    GO

    • Marcado como respuesta JlarzateC miércoles, 21 de marzo de 2018 14:54
    • Desmarcado como respuesta JlarzateC miércoles, 21 de marzo de 2018 14:54
    • Propuesto como respuesta Tonatiuh AbregoModerator miércoles, 21 de marzo de 2018 18:49
    • Marcado como respuesta JlarzateC miércoles, 21 de marzo de 2018 20:02
    • Desmarcado como respuesta JlarzateC miércoles, 21 de marzo de 2018 22:51
    • Marcado como respuesta Tonatiuh AbregoModerator lunes, 26 de marzo de 2018 17:05
    • Desmarcado como respuesta JlarzateC lunes, 9 de abril de 2018 16:03
    • Marcado como respuesta Pablo RubioModerator lunes, 8 de octubre de 2018 21:15
    miércoles, 21 de marzo de 2018 3:42
  • Avatar of Willams Morales
    Willams Morales

    Hola @Williams Morales, gracias por tu respuesta, si me funciona pero la informacion se duplica, por ejemplo, necesito que del id 13 sean solo 3 valores y me llegan muchos, sabes como solucionarlo?


    • Editado JlarzateC miércoles, 21 de marzo de 2018 18:19
    miércoles, 21 de marzo de 2018 14:40