Suma de los totales de cada fila

Buen dia a todos!
En mi trabajo me pidieron sacar en un reporte la suma de los totales por cada fila osea tener que al ultimo poner una columna TOTAL donde me de la suma total de los campos de la fila pero para sacar el total de cada campo tuve que hacer un SELECT anidado y un SUM de sus respectivos campos y utilizando las tablas que les corresponde.

Alguien sabe si es posible sumar como tal el resultado que me da cada SELECT anidado, o alguna manera de hacer la suma total por cada fila, cabe recalcar que el identificador de cada fila seria su “CardCode”.

Espero haber sido clara.
Muchas gracias.

Les dejo el codigo:

SELECT
T0."CardCode" 														"Código",
T0."CardName"														"Cliente",
(
	SELECT 
	SUM(A2."DocTotal"	-	A2."PaidToDate")
	FROM JDT1 A0
	INNER JOIN 	OJDT A1 	ON A0."TransId"		=		A1."TransId"
	INNER JOIN 	ODPI A2 	ON A1."TransId" 	= 		A2."TransId"
	WHERE
	A0."Account" IN ('105-01-000' ,'105-02-000','105-03-000') 
	AND 
	A1."TransType" 	= 	'203'
	AND 
	A2."CardCode"	=	T0."CardCode" 
)																	"Factura Anticipos Clientes",
(
	SELECT 
	SUM(B2."DocTotal"	-	B2."PaidToDate")
	FROM JDT1 B0
	INNER JOIN 	OJDT B1 	ON B0."TransId"		=		B1."TransId"
	INNER JOIN 	OINV B2 	ON B1."TransId" 	= 		B2."TransId"
	WHERE
	B0."Account" IN ('105-01-000' ,'105-02-000','105-03-000') 
	AND 
	B1."TransType" 	= 	'13'
	AND 
	B2."CardCode"	=	T0."CardCode" 
)																	"Facturas Clientes",
(
	SELECT 
	SUM((C2."DocTotal"	-	C2."PaidToDate")*-1)
	FROM JDT1 C0
	INNER JOIN 	OJDT C1 	ON C0."TransId"		=		C1."TransId"
	INNER JOIN 	ORIN C2 	ON C1."TransId" 	= 		C2."TransId"
	WHERE
	C0."Account" IN ('105-01-000' ,'105-02-000','105-03-000') 
	AND 
	C1."TransType" 	= 	'14'
	AND 
	C2."CardCode"	=	T0."CardCode"  
) 																	"Nota de Crédito",
(
	SELECT
	SUM(D2."OpenBal"*-1)
	FROM OVPM D2
	WHERE
	D2."CardCode"	=	T0."CardCode" 
	AND
	D2."Canceled"	= 	'N'
	AND
	D2."DocType"	=	'C'
)																	"Pagos Efectuados",
(
	SELECT
	SUM(E2."OpenBal"*-1)
	FROM ORCT E2
	WHERE
	E2."CardCode"	=	T0."CardCode" 
	AND
	E2."Canceled"	= 	'N'
	AND
	E2."DocType"	=	'C'
)																	"Pagos recibidos",
''	"Total"
FROM
OCRD T0

Hola @Joceline entiendo que quieres sumar, entonces tu select enciérralo

Select *,[Factura Anticipos Clientes]+[Facturas Clientes]+[Pagos Efectuados]+[Pagos Efectuados] as Total from (
SELECT
T0."CardCode" 														"Código",
T0."CardName"														"Cliente",
(
	SELECT 
	SUM(A2."DocTotal"	-	A2."PaidToDate")
	FROM JDT1 A0
	INNER JOIN 	OJDT A1 	ON A0."TransId"		=		A1."TransId"
	INNER JOIN 	ODPI A2 	ON A1."TransId" 	= 		A2."TransId"
	WHERE
	A0."Account" IN ('105-01-000' ,'105-02-000','105-03-000') 
	AND 
	A1."TransType" 	= 	'203'
	AND 
	A2."CardCode"	=	T0."CardCode" 
)																	"Factura Anticipos Clientes",
(
	SELECT 
	SUM(B2."DocTotal"	-	B2."PaidToDate")
	FROM JDT1 B0
	INNER JOIN 	OJDT B1 	ON B0."TransId"		=		B1."TransId"
	INNER JOIN 	OINV B2 	ON B1."TransId" 	= 		B2."TransId"
	WHERE
	B0."Account" IN ('105-01-000' ,'105-02-000','105-03-000') 
	AND 
	B1."TransType" 	= 	'13'
	AND 
	B2."CardCode"	=	T0."CardCode" 
)																	"Facturas Clientes",
(
	SELECT 
	SUM((C2."DocTotal"	-	C2."PaidToDate")*-1)
	FROM JDT1 C0
	INNER JOIN 	OJDT C1 	ON C0."TransId"		=		C1."TransId"
	INNER JOIN 	ORIN C2 	ON C1."TransId" 	= 		C2."TransId"
	WHERE
	C0."Account" IN ('105-01-000' ,'105-02-000','105-03-000') 
	AND 
	C1."TransType" 	= 	'14'
	AND 
	C2."CardCode"	=	T0."CardCode"  
) 																	"Nota de Crédito",
(
	SELECT
	SUM(D2."OpenBal"*-1)
	FROM OVPM D2
	WHERE
	D2."CardCode"	=	T0."CardCode" 
	AND
	D2."Canceled"	= 	'N'
	AND
	D2."DocType"	=	'C'
)																	"Pagos Efectuados",
(
	SELECT
	SUM(E2."OpenBal"*-1)
	FROM ORCT E2
	WHERE
	E2."CardCode"	=	T0."CardCode" 
	AND
	E2."Canceled"	= 	'N'
	AND
	E2."DocType"	=	'C'
)																	"Pagos recibidos"
--''	"Total"
FROM
OCRD T0) x

Espero esta sea la ayuda que necesitas, nos comentas.

1 me gusta

Muchas gracias por la ayuda, olvide mencionar que yo uso HANA no se si la sintaxis sea diferente porque me marco error en los corchetes del al principio donde van los nombres de cada subquery

Prueba cambiando los corchetes

Select *,x."Factura Anticipos Clientes"+x."Facturas Clientes"+x."Nota de Crédito"+x."Pagos Efectuados"+x."Pagos recibidos" Total from (SELECT
T0."CardCode" 														"Código",
T0."CardName"														"Cliente",
(
	SELECT 
	SUM(A2."DocTotal"	-	A2."PaidToDate")
	FROM JDT1 A0
	INNER JOIN 	OJDT A1 	ON A0."TransId"		=		A1."TransId"
	INNER JOIN 	ODPI A2 	ON A1."TransId" 	= 		A2."TransId"
	WHERE
	A0."Account" IN ('105-01-000' ,'105-02-000','105-03-000') 
	AND 
	A1."TransType" 	= 	'203'
	AND 
	A2."CardCode"	=	T0."CardCode" 
)																	"Factura Anticipos Clientes",
(
	SELECT 
	SUM(B2."DocTotal"	-	B2."PaidToDate")
	FROM JDT1 B0
	INNER JOIN 	OJDT B1 	ON B0."TransId"		=		B1."TransId"
	INNER JOIN 	OINV B2 	ON B1."TransId" 	= 		B2."TransId"
	WHERE
	B0."Account" IN ('105-01-000' ,'105-02-000','105-03-000') 
	AND 
	B1."TransType" 	= 	'13'
	AND 
	B2."CardCode"	=	T0."CardCode" 
)																	"Facturas Clientes",
(
	SELECT 
	SUM((C2."DocTotal"	-	C2."PaidToDate")*-1)
	FROM JDT1 C0
	INNER JOIN 	OJDT C1 	ON C0."TransId"		=		C1."TransId"
	INNER JOIN 	ORIN C2 	ON C1."TransId" 	= 		C2."TransId"
	WHERE
	C0."Account" IN ('105-01-000' ,'105-02-000','105-03-000') 
	AND 
	C1."TransType" 	= 	'14'
	AND 
	C2."CardCode"	=	T0."CardCode"  
) 																	"Nota de Crédito",
(
	SELECT
	SUM(D2."OpenBal"*-1)
	FROM OVPM D2
	WHERE
	D2."CardCode"	=	T0."CardCode" 
	AND
	D2."Canceled"	= 	'N'
	AND
	D2."DocType"	=	'C'
)																	"Pagos Efectuados",
(
	SELECT
	SUM(E2."OpenBal"*-1)
	FROM ORCT E2
	WHERE
	E2."CardCode"	=	T0."CardCode" 
	AND
	E2."Canceled"	= 	'N'
	AND
	E2."DocType"	=	'C'
)																	"Pagos recibidos"
--''	"Total"
FROM
OCRD T0) x

Nos avisas.

1 me gusta

Olvide mencionar que yo estoy utilizando HANA y en vez de corchetes eran parentesis, si me arroja la columna de Total pero no me muestra los totales correspondientes como podria hacerle o donde tendria que poner la condicion para que coincidan con su CardCode cada fila y me muestre la suma de los totales de cada fila. Mucha sgracias

Que versión de SAP estas utilizando, en la versión 9.2 viene un apartado en ventas donde te da el reporte de ventas por un rango de fechas que tu elijas, y a mi se me hace que sale mucho mas detallado que lo que quieres hacer.

Hola! Gracias por responder, si estoy usando esa versión pero el problema es que mi Jefe me lo requirió así :c igual podrías decirme en que aparto esta para comentarle a ver si eso le puede servir mas. Muchas gracias!

Tienes que hacerle un GROUP BY

Select *,x."Factura Anticipos Clientes"+x."Facturas Clientes"+x."Nota de Crédito"+x."Pagos Efectuados"+x."Pagos recibidos" Total from (SELECT
T0."CardCode" 														"Código",
T0."CardName"														"Cliente",
(
	SELECT 
	SUM(A2."DocTotal"	-	A2."PaidToDate")
	FROM JDT1 A0
	INNER JOIN 	OJDT A1 	ON A0."TransId"		=		A1."TransId"
	INNER JOIN 	ODPI A2 	ON A1."TransId" 	= 		A2."TransId"
	WHERE
	A0."Account" IN ('105-01-000' ,'105-02-000','105-03-000') 
	AND 
	A1."TransType" 	= 	'203'
	AND 
	A2."CardCode"	=	T0."cardcode"
	group by A2."CardCode"
)																	"Factura Anticipos Clientes",
(
	SELECT 
	SUM(B2."DocTotal"	-	B2."PaidToDate")
	FROM JDT1 B0
	INNER JOIN 	OJDT B1 	ON B0."TransId"		=		B1."TransId"
	INNER JOIN 	OINV B2 	ON B1."TransId" 	= 		B2."TransId"
	WHERE
	B0."Account" IN ('105-01-000' ,'105-02-000','105-03-000') 
	AND 
	B1."TransType" 	= 	'13'
	AND 
	B2."CardCode"	=	T0."CardCode" 
	group by B2."CardCode"
)																	"Facturas Clientes",
(
	SELECT 
	SUM((C2."DocTotal"	-	C2."PaidToDate")*-1)
	FROM JDT1 C0
	INNER JOIN 	OJDT C1 	ON C0."TransId"		=		C1."TransId"
	INNER JOIN 	ORIN C2 	ON C1."TransId" 	= 		C2."TransId"
	WHERE
	C0."Account" IN ('105-01-000' ,'105-02-000','105-03-000') 
	AND 
	C1."TransType" 	= 	'14'
	AND 
	C2."CardCode"	=	T0."CardCode"
	group by C2."CardCode"  
) 																	"Nota de Crédito",
(
	SELECT 
	SUM(D2."OpenBal"*-1)
	FROM OVPM D2
	WHERE
	D2."CardCode"	=	T0."CardCode" 
	AND
	D2."Canceled"	= 	'N'
	AND
	D2."DocType"	=	'C'
	group by D2."CardCode"
)																	"Pagos Efectuados",
(
	SELECT 
	SUM(E2."OpenBal"*-1)
	FROM ORCT E2
	WHERE
	E2."CardCode"	=	T0."CardCode" 
	AND
	E2."Canceled"	= 	'N'
	AND
	E2."DocType"	=	'C'
	group by E2."CardCode"
)																	"Pagos recibidos"
--''	"Total"
FROM
OCRD T0) x
1 me gusta

Ahorita yo estoy usando la version 8.8 por lo que algunos menus no son iguales, pero segun recuerdo estaba en el apartado de ventas / reportes de venta / analisis de ventas / Informe de analisis de ventas, ahi puedes seleccionar de que periodo a que periodo quieres el informe y agregar 2-3 variables al reporte, espero sea lo que necesitas.

Muchas gracias por tu ayuda si me dio el resultado deseado!

1 me gusta