viernes, 2 de septiembre de 2016

SQL - update select con columnas agregadas (suma)

--NC VALOR JC
UPDATE #ficha_det
SET valor_nota_credito = tablaAdd.campoSum
FROM #ficha_det det, (SELECT a.num_factura,a.rut_proveedor, nc.tipo_docum, SUM(ISNULL(nc.neto,0)+ISNULL(nc.exento,0))  campoSum
                          FROM #ficha_det a, t_nota_credito_debito nc
                          WHERE nc.num_factura=a.num_factura   
 AND nc.rut_proveedor=a.rut_proveedor AND tipo_docum=1
                         GROUP BY a.num_factura,a.rut_proveedor, nc.tipo_docum )  tablaAdd
WHERE det.num_factura = tablaAdd.num_factura AND det.rut_proveedor = tablaAdd.rut_proveedor
AND tablaAdd.tipo_docum = 1


Otro Ejemplo:


--dias mora
UPDATE #universo
SET dias_mora = tablaAdd.dias_mora
FROM leaseoper..t_cuotas cu , (SELECT DATEDIFF(DAY,MIN(c.fecha_vencimiento),GETDATE()) AS dias_mora, u.operacion FROM leaseoper..t_cuotas c ,#universo u
WHERE c.operacion = u.operacion
GROUP BY dias_mora, u.operacion ) tablaAdd
WHERE cu.operacion = tablaAdd.operacion AND #universo.operacion = cu.operacion AND
 cu.estado IN (1,3)


Otro Ejemplo:
--total de nominas
  UPDATE #nominas_universo
   SET total_nomina = tablaAdd.campoSum
   FROM #nominas_universo uni , (SELECT b.numero_nomina, (SUM(ISNULL(b.monto,0))) campoSum
FROM #nominas_universo a , dbo.t_req_pago b
WHERE a.numero_nomina = b.numero_nomina
GROUP BY b.numero_nomina )tablaAdd
   WHERE uni.numero_nomina = tablaAdd.numero_nomina

No hay comentarios:

Publicar un comentario