none
Barcar dato duplicado RRS feed

  • Pregunta

  • Matriculas_Tabla

    Num_Estudiante         Termino             Codigo_Clase         Nota

          1010                       1510               Reco_205                 F

          1010                       1510               Reco_210                 B

           1010                      1520               Reco_205                 C    

           1010                      1520               Reco_250                B

    Quiero una consulta que compare el numero del estudiante y el codigo de la clase y si que tiene clases igual en terminus diferentes me ponga ambas notas 
    ejemplo de como quiero la consulta

    Num_Estudiante        Codigo_Clase       Nota_1     Nota_2     Nota_3

            1010                  Reco_205             F              C         

            1010                  Reco_210             B

            1010                  Reco_250             B

    El estudiante repitio Reco_205 y necesito capturer las dos notas del mismo gracias

    miércoles, 1 de marzo de 2017 15:12

Respuestas

  • Usa la forma tradicional de pivotear filas a columnas que es:

    - Agrupar (group by)

    - regar valores (expresion CASE)

    - Agregar (MIN/MAX/SUM/etc.)

    select 
        Num_Estudiante, Codigo_Clase,
        max(case when Termino_Clase = '1510' then Nota end) as Nota_1, 
        max(case when Termino_Clase = '1520' then Nota end) as Nota_2,
        max(case when Termino_Clase = '1530' then Nota end) as Nota_3
    from
        tuTabla
    group by
        Num_Estudiante, Codigo_Clase;

    Si no quieres depender del codigo de los terminos, entonces enumera primero y usa el valor calculado.

    with R as (
    select *, row_number() over(partition by Num_Estudiante, Codigo_Clase order by Termino) as rn
    from tuTabla
    )

    select 
        Num_Estudiante, Codigo_Clase,
        max(case when rn = 1 then Nota end) as Nota_1, 
        max(case when rn = 2 then Nota end) as Nota_2,
        max(case when rn = 3 then Nota end) as Nota_3
    from 
        R
    group by 
        Num_Estudiante, Codigo_Clase;

    Si tienes mas de tres terminos posibles y deseas que el query sea dinamico entonces ya sabes, tendras que recurrir a pivoteo dinamico. Busca en este mismo foro por "pivot dinamico" y encontraras varias sugerencias.


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas


    • Propuesto como respuesta Willams Morales miércoles, 1 de marzo de 2017 15:31
    • Editado HunchbackMVP miércoles, 1 de marzo de 2017 15:38
    • Marcado como respuesta Efrain Diaz miércoles, 1 de marzo de 2017 20:34
    miércoles, 1 de marzo de 2017 15:21