select
    alumnos.nro_alumno,
    alumnos.nombre,
    alumnos.direccion,
    alumnos.email,
    alumnos.telefono,
    saldos.total_factura,
    saldos.total_pagos,
    cast(saldos.total_factura - saldos.total_pagos as numeric(15,2)) as saldo
  from alumnos
  inner join
    (select
        comprobantes_cabeza.nro_alumno,
        cast(sum(
          case 
            when comprobantes_cabeza.nro_tipo_comprobante = 2 then -1
            else 1
          end * (comprobantes_cabeza.gravado + comprobantes_cabeza.iva + comprobantes_cabeza.exento)) as numeric(15, 2)) as total_factura,
        cast(sum(coalesce(
          (select
              sum(coalesce(relacion_cuenta_corriente.importe, 0))
            from relacion_cuenta_corriente
            where
              relacion_cuenta_corriente.nro_debe = comprobantes_cabeza.nro_comprobante_cabeza), 0)) as numeric(15, 2)) as total_pagos
      from comprobantes_cabeza
      left  join relacion_cuenta_corriente on relacion_cuenta_corriente.nro_debe = comprobantes_cabeza.nro_comprobante_cabeza
      left  join cobros on 
        cobros.nro_cobro = relacion_cuenta_corriente.nro_haber and
        cobros.fecha <= @fecha
      where
        comprobantes_cabeza.fecha <= @fecha
      group by
        1) saldos on saldos.nro_alumno = alumnos.nro_alumno
