none
Unir datos de las tablas RRS feed

  • Pregunta

  • Tabla Notas
    
    Estudiante     Termino    Clase    Nota      Curso   Cant 
    
    10              1515      R-10      F          9      1
    
    10              1515      R-11      C          9      1
    
    10              1516      R-12      B          9      1
    
    10              1516      R-10      B          9      2
    
    
    
    Tabla Curriculos
    
    Curso   clase   Semestre   Posicion
    
      9      R-1        1        1
      9      R-3        1        2
      9      R-5        1        3
      9      R-10       1        4
      9      R-11       1        5
      9      R-12       1        6
    
    
    Estudiante   Curso    Clase    Nota    Nota
    
       10          9       R-1       
       10          9       R-3       
       10          9       R-5        
       10          9       R-10     F       B     
       10          9       R-11     C     
       10          9       R-12     B  
    
    El estudiante 10 del curso 9 tuvo notas en sola estas clases, se trajeron todos los datos del curriculo por orden de semestre y Posicion y las notas por la clase, estudiante y cant (1 o 2)
    
    Espero puedan ayudarme, muchas gracias
    
    
    
    
    
    
    
    
    

    jueves, 7 de junio de 2018 12:36

Respuestas

  • Hola Efrain:

    DECLARE @ESTUDIANTE INT = 10;
    
    SELECT @ESTUDIANTE AS ESTUDIANTE,
           c.CURSO,
           ISNULL(C.Clase, '') AS CLASE,
           ISNULL(O.nota1, '') AS NOTA1,
           ISNULL(O.nota2, '') AS NOTA2
    FROM CURRICULOS C
         LEFT JOIN
    (
        SELECT s.Estudiante,
               s.curso,
               s.clase,
               s.semestre,
               MAX(s.NOTA1) AS nota1,
               MAX(s.nota2) AS nota2
        FROM
    (
        SELECT N.ESTUDIANTE,
               O.CURSO,
               N.CLASE,
               O.SEMESTRE,
               ISNULL(CASE
                          WHEN N.CANT = 1
                          THEN N.Nota
                      END, '') AS NOTA1,
               ISNULL(CASE
                          WHEN N.CANT = 2
                          THEN N.NOTA
                      END, '') AS NOTA2
        FROM notas n
             INNER JOIN
    (
        SELECT c.CURSO,
               c.SEMESTRE,
               C.POSICION
        FROM CURRICULOS AS c
    ) AS o ON n.curso = o.curso
              OR O.CURSO IS NULL
        GROUP BY N.Estudiante,
                 O.CURSO,
                 N.CLASE,
                 O.SEMESTRE,
                 N.CANT,
                 n.nota
    ) AS s
        WHERE S.Estudiante = @ESTUDIANTE
        GROUP BY s.Estudiante,
                 s.curso,
                 s.clase,
                 s.semestre
    ) AS O ON C.CURSO = O.CURSO
              AND O.Clase = C.CLASE 
    		  
    		  
    
    
    
    
    
    
    
    Un saludo

    • Marcado como respuesta Efrain Diaz jueves, 7 de junio de 2018 19:52
    jueves, 7 de junio de 2018 19:30

Todas las respuestas

  • ¿Cuál es la pregunta?

    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    jueves, 7 de junio de 2018 18:08
  • Todos los datos del curriculo en referencia cruzada con los datos de la tabla nota y me lo una en una tabla donde ponga las notas a las clases que ya el estudiante haya tomado del curriculo y tambien las que no haya tomado pero sin notas 

    Estudiante   Curso    Clase    Nota    Nota
    
       10          9       R-1       
       10          9       R-3       
       10          9       R-5        
       10          9       R-10             F       B     
       10          9       R-11             C     
       10          9       R-12             B  

    En la tabla de notas el estudiante cogio la clase R-10 dos veces en periodos diferentes y una en la clase R-11 y una en la clase R-12, pero no tomo clases todavia en la R-1, R-3, R-5 y por eso esta en blanco, he buscado mucha informacion para hacer eso y es sumamente complicado, casi imposible por lo menos para mi, gracias por tu ayuda

    jueves, 7 de junio de 2018 18:22
  • Hola Efrain:

    DECLARE @ESTUDIANTE INT = 10;
    
    SELECT @ESTUDIANTE AS ESTUDIANTE,
           c.CURSO,
           ISNULL(C.Clase, '') AS CLASE,
           ISNULL(O.nota1, '') AS NOTA1,
           ISNULL(O.nota2, '') AS NOTA2
    FROM CURRICULOS C
         LEFT JOIN
    (
        SELECT s.Estudiante,
               s.curso,
               s.clase,
               s.semestre,
               MAX(s.NOTA1) AS nota1,
               MAX(s.nota2) AS nota2
        FROM
    (
        SELECT N.ESTUDIANTE,
               O.CURSO,
               N.CLASE,
               O.SEMESTRE,
               ISNULL(CASE
                          WHEN N.CANT = 1
                          THEN N.Nota
                      END, '') AS NOTA1,
               ISNULL(CASE
                          WHEN N.CANT = 2
                          THEN N.NOTA
                      END, '') AS NOTA2
        FROM notas n
             INNER JOIN
    (
        SELECT c.CURSO,
               c.SEMESTRE,
               C.POSICION
        FROM CURRICULOS AS c
    ) AS o ON n.curso = o.curso
              OR O.CURSO IS NULL
        GROUP BY N.Estudiante,
                 O.CURSO,
                 N.CLASE,
                 O.SEMESTRE,
                 N.CANT,
                 n.nota
    ) AS s
        WHERE S.Estudiante = @ESTUDIANTE
        GROUP BY s.Estudiante,
                 s.curso,
                 s.clase,
                 s.semestre
    ) AS O ON C.CURSO = O.CURSO
              AND O.Clase = C.CLASE 
    		  
    		  
    
    
    
    
    
    
    
    Un saludo

    • Marcado como respuesta Efrain Diaz jueves, 7 de junio de 2018 19:52
    jueves, 7 de junio de 2018 19:30