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