none
Consulta Sum() Over - sumando filas anteriores RRS feed

  • Pregunta

  • with Resultados as (
    SELECT
        ROW_NUMBER() OVER(ORDER BY e.Fecha_Inicio ASC) AS RowN,
        A.Num_Estudiante, A.Termino,sum (D.Creditos) as Creditos,C.Descripcion,e.Fecha_Inicio,
        e.Fecha_Fin,e.Fecha_Fin_2,
        (f.Apellido_Paterno + ' ' + f.Apellido_materno + ' ' + f.nombre + ' ' + f.Inicial) as nombre,
        g.Descripcion as departamento,
    
        AVG(CASE A.Nota_Final
              WHEN 'A' THEN 4.0  WHEN 'B' THEN 3.0  WHEN 'C' THEN 2.0 WHEN 'D' THEN 1.0  WHEN 'F' THEN 0.0 END) AS [Promedio], 
        sum(Case A.Nota_Final when 'A' then 4 * d.Creditos when 'B' then 3 * d.Creditos when 'C' then 2 * d.creditos when 'D' then 1 * d.Creditos end) [PH]
    	
           FROM
        Notas_pro_eva_bol_Trans A
    left join Matriculas_Tabla B on A.termino=b.termino and A.Num_Estudiante=B.Num_Estudiante
    left join Cursos_Tabla C on B.Curso=C.Num_Curso
    left join Clases_Tabla d on a.Codigo_Clase=d.Codigo_Clase 
    left join Termino_Academico_Tabla E on A.Termino=E.Termino
    left join Estudiantes_Tabla F on a.Num_Estudiante=F.Num_Estudiante
    left join Departamentos_Academicos_Tabla g on b.Departamento=g.Num_Departamento
    where a.Num_Estudiante=126851975 and c.Num_Curso =6
    GROUP BY
        A.Num_Estudiante, A.Termino,b.Semestre,A.Termino,C.Descripcion,e.Fecha_Inicio,
        e.Fecha_Fin,e.Fecha_Fin_2,
        f.Apellido_Paterno,f.Apellido_materno,f.nombre,f.Inicial,g.Descripcion
    )
    --
    SELECT RowN,Promedio,IIF (Promedio is null, 0, Creditos) as Creditos
    from Resultados
    order by RowN;

    Arriba tengo la consulta que tengo hasta este momento y el resultado es el siguiente

    RowN      Promedio    Creditos   

    1	3.600000	12
    2	3.000000	12
    3	NULL	         0
    4	4.000000	12
    5	3.600000	12

    Lo que quiero es otra columna que haga lo siguiente

    RowN Promedio Creditos Cred1

    1 3.600000 12 0 2 3.000000 12 12 3 NULL 0 24 4 4.000000 12 24 5 3.600000 12 36

    Osea Si el RowN = 1 then 0

    if RowN = 2 then Creditos where RowN = 1 else

    Sum(Creditos) 

    las sumas de los creditos solo se van a tomar en consideracion desde el RowN 2 hacia delante nunca se 

    va a Sum() el RowN 1


    lunes, 25 de noviembre de 2019 13:49

Respuestas