SQL - Suma Filas

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 42 puestos en SQL (en relación al último mes)
Gráfica de SQL

Suma Filas

Publicado por Franz (9 intervenciones) el 17/11/2021 22:27:34
Hola, espero me puedan ayudar.

Tengo una tabla con facturas y pagos. Las facturas el ERP las muestra en cantidades positivas y los pagos en cantidades negativas. Sin embargo en la base de datos todas las cantidades las muestra en positivos.
Necesito sumar las facturas y pagos con mismo ID para encontrar la diferencia, pero no logro sumar y al mismo tiempo pasar a negativo los pagos para que el resultado sea la diferencia de ambos.

Ejemplo:

ID---------- Monto --------- Tipo ---------- Total
3476------ 230 ------------- Factura ----- 0
3476 ----- 230 ------------- Pago -------- 0
7856 ----- 100 ------------- Factura ------ 20
7856 ----- 80 -------------- Pago --------- 20

A mi me da asi:

ID---------- Monto --------- Tipo ---------- Total
3476------ 230 ------------- Factura ----- 460
3476 ----- 230 ------------- Pago -------- 460
7856 ----- 100 ------------- Factura ------ 180
7856 ----- 80 -------------- Pago --------- 180


Tengo este codigo:

SELECT ID, MONTO, TIPO,
SUM(CASE WHEN (TIPO = 'F') THEN MONTO END + CASE WHEN (ARI.TYPE = 'P') THEN MONTO * -1 END)
OVER (PARTITION BY ID) AS 'TOTAL'
FROM TABLAPAGOS

Muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Suma Filas

Publicado por Isaias (1921 intervenciones) el 18/11/2021 01:40:07
¿Y que te da como resultado tu query?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Suma Filas

Publicado por Isaias (1921 intervenciones) el 18/11/2021 01:46:07
Este es un simple ejemplo


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
create table #t ( ord int primary key, total int, running_total int)
 
insert #t(ord,total, running_total)  values (2,20,5)
-- notice the malicious re-ordering
insert #t(ord,total, running_total) values (1,10, 10)
insert #t(ord,total, running_total)  values (3,10, -15)
insert #t(ord,total, running_total)  values (7,1, 20)
insert #t(ord,total, running_total)  values (9,1, -10)
insert #t(ord,total, running_total)  values (11,1, -5)
insert #t(ord,total, running_total)  values (10,1, 20)
--select * from #t
select ord,
       total,
running_total,
       sum(running_total) over(order by ord rows unbounded preceding) as runningtotal
from #t
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Suma Filas

Publicado por Isaias (1921 intervenciones) el 18/11/2021 01:51:17
Este, es otro ejemplo de como realizarlo


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
CREATE TABLE #MiTabla(
Fecha smalldatetime,
Pedido smallint,
SaldoAnterior smallint,
Ingreso smallint,
Egreso smallint,
Saldo smallint
)
go
 
INSERT INTO #MiTabla VALUES('2013-05-02 02:15:00',899,0,167,0,0)
INSERT INTO #MiTabla VALUES('2013-05-03 16:07:10',900,0,167,0,0)
INSERT INTO #MiTabla VALUES('2013-07-01 13:25:15',901,0,50,0,0)
INSERT INTO #MiTabla VALUES('2013-07-01 22:05:52',902,0,0,140,0)
INSERT INTO #MiTabla VALUES('2014-01-01 23:00:00',500,0,0,1000,0)
-- SS 2012
SELECT
	Fecha,
	ISNULL(
	SUM(ingreso - egreso) OVER(
	ORDER BY Fecha
	ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
	), 0) AS saldo_anterior,
	ingreso,
	egreso,
	SUM(ingreso - egreso) OVER(
	ORDER BY Fecha
	ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
	) AS saldo
FROM
	#MiTabla
ORDER BY
	Fecha;
GO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1
Ha disminuido su posición en 42 puestos en SQL (en relación al último mes)
Gráfica de SQL

Suma Filas

Publicado por Franz (9 intervenciones) el 18/11/2021 19:37:16
Muchas gracias. Con esos ejemplos ya obtuve otra idea, y me dio el resultado que esperaba.
SELECT
Contrato,
SUM
(
Valor_Uso +
CASE
WHEN Tipo='CARGO' THEN Valor_Tipo
WHEN Tipo='DESCUENTO' THEN -Valor_Tipo
ELSE 0
END
) AS Total
FROM
LaTabla
GROUP BY
Contrato
Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar