none
Ayuda con Tablas temporales RRS feed

  • Pregunta

  • Hola, amigos:

    Tengo la siguiente tabla: 

    CodAlumno   SE1   SE2     SE3     SE4     SE5

    500 ----------  90  --  48  - NULL -NULL-NULL

    501 ----------  80  --  80  - NULL -NULL-NULL

    502 ----------  90  --  48  - NULL -NULL-NULL

    503 ----------  80  --  70  - NULL -NULL-NULL

    Necesito crear la siguiente tabla temporal:

    CodAlumno   SE1   SE2

    500 ----------  90  --  48 

    501 ----------  80  --  80 

    502 ----------  90  --  48  

    503 ----------  80  --  70


    Es decir, Crear una Temporal a partir de Tabla01 excluyendo las columnas que contenga valores Nulos.
    Tener en cuenta que son N Registros.

    Por si acaso no puede darse el siguiente caso:

    CodAlumno   SE1   SE2     SE3     SE4     SE5

    500 ----------  90  --  48  - NULL -NULL-NULL

    501 ----------  NULL  --  80  - NULL -NULL-NULL

    502 ----------  90  --  NULL  - NULL -NULL-NULL

    503 ----------  80  --  70  - NULL -NULL-NULL


    o bien toda la columna es NULL o tendra datos (incluyendo el CERO) pero nunca como en la figura anterior (campos SE1 y SE2)

    Espero su ayuda amigos, gracias.


    • Editado XaviFer martes, 31 de octubre de 2017 12:01
    martes, 31 de octubre de 2017 11:59

Respuestas

  • La solucion dada en LWDP fue:

    select codalumno,
    sum(case when SE1 is not null then SE1 end) as SE1,
    sum(case when SE2 is not null then SE2 end) as SE2,
    sum(case when SE3 is not null then SE3 end) as SE3,
    sum(case when SE4 is not null then SE4 end) as SE4,
    sum(COALESCE(SE1,0)
              + COALESCE(SE2,0)
              + COALESCE(SE3,0)
              + COALESCE(SE4,0)) AS TOTAL1,
    sum(case when SA1 is not null then SA1 end) as SA1,
    sum(case when SA2 is not null then SA2 end) as SA2,
    sum(case when SA3 is not null then SA3 end) as SA3,
    sum(COALESCE(SA1,0)
              + COALESCE(SA2,0)
              + COALESCE(SA3,0)) AS TOTAL2
    FROM #alumnos
    
    GROUP BY codalumno

    jueves, 2 de noviembre de 2017 16:44

Todas las respuestas

  • Hola XaviFer, podrías ampliar el concepto de por qué la necesidad de armar esa tabla temporal? 

    Ya que las columnas en NULL no te afectarían en nada en un query, y podrías tener la lógica para automatizar las consultas para evitar traer a los resultados las columnas en NULL.

    Saludos.


    Mariano K.

    miércoles, 1 de noviembre de 2017 3:25
  • La solucion dada en LWDP fue:

    select codalumno,
    sum(case when SE1 is not null then SE1 end) as SE1,
    sum(case when SE2 is not null then SE2 end) as SE2,
    sum(case when SE3 is not null then SE3 end) as SE3,
    sum(case when SE4 is not null then SE4 end) as SE4,
    sum(COALESCE(SE1,0)
              + COALESCE(SE2,0)
              + COALESCE(SE3,0)
              + COALESCE(SE4,0)) AS TOTAL1,
    sum(case when SA1 is not null then SA1 end) as SA1,
    sum(case when SA2 is not null then SA2 end) as SA2,
    sum(case when SA3 is not null then SA3 end) as SA3,
    sum(COALESCE(SA1,0)
              + COALESCE(SA2,0)
              + COALESCE(SA3,0)) AS TOTAL2
    FROM #alumnos
    
    GROUP BY codalumno

    jueves, 2 de noviembre de 2017 16:44