¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo mostrar la columna de Cancelaciones al lado de Ventas Crédito en un query SQL

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 16 Vistas
0
Cargando...

Buenas Tardes:

Tengo el siguiente query:

SELECT * FROM (

SELECT distinct T0.Cardcode ' ' T0.Cardname 'Cliente', sum(T0.DocTotal) 'Venta Crédito' ,0 as Cancelaciones FROM OINV T0 group by T0.Cardcode,T0.Cardname

union all

SELECT T0.Cardcode ' ' T0.Cardname, 0,SUM(T0.DocTotal) FROM ORIN T0 GROUP BY T0.Cardcode,T0.Cardname

) AS T88

Mi problema está en que quiero que la columna de cancelaciones que tiene valores aparezca al lado de la columna de Ventas Crédito correspondiente al cliente; es decir:

Cliente Ventas Crédito Cancelaciones

01 Claudia 12000 100

Y ahora me aparece de la siguiente forma:

Cliente Ventas Crédito Cancelaciones

01 Claudia 12000 0

01 Claudia 0 100

¡Gracias!

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola.

Cuando reemplazas las fechas fijas por variables de entrada, sucede el error que mencionas.

Para que funcione bien copia y pega este código:


/* SELECT FROM [dbo].[OINV] P0 */
DECLARE @F1 AS DATETIME
/* WHERE */
SET @F1 = /* P0.DocDate */ '[%0]'

/* SELECT FROM [dbo].[OINV] P1 */
DECLARE @F2 AS DATETIME
/* WHERE */
SET @F2 = /* P1.DocDate */ '[%1]'

SELECT T10.Cliente, SUM(SubTotFac) as Venta, SUM(T10.Devoluciones) as Devolucion
FROM
(
  SELECT (T0.CardCode + ' ' + T0.CardName) as Cliente, T0.DocNum, T0.DocTotal, 
    SubTotFac=(T0.DocTotal+WTSum-VatSum+DiscSum),
    'Devoluciones'=(SELECT SUM(T1.LineTotal) FROM RIN1 T1 WHERE T1.BaseEntry = T0.DocEntry) 
  FROM OINV T0
  WHERE T0.DocDate BETWEEN @F1 AND @F2
) T10
GROUP BY T10.Cliente
ORDER BY T10.Cliente

Así debe correr bien.

Me cuentas cómo te va.

Saludos.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola.

¿Copiaste y pegaste la consulta tal cual está en el post?. Aquí corre bien.

La consulta hace lo que estás pidiendo:

- en la col DocTotal trae el total del documento tal como lo tenías.

- en la col Devoluciones, la subconsulta suma las líneas de las Notas Crédito que tienen como documento base la factura.

Se desarrolla en dos etapas, de manera similar como lo planteaste al principio:

- en la primera etapa se relacionan las facturas con el total de devoluciones con NC.

- en la segunda, se totalizan las facturas y devoluciones por cada cliente (SN).

Hará falta pulirla un poco más, de acuerdo a lo que necesites. Por ejemplo lo que te pregunté respecto al subtotal con descuentos y antes de impuestos y retenciones.

Las notas crédito se enlazan a las facturas por las líneas del documento, por eso uso la tabla RIN1 (líneas de documento) y no ORIN (encabezado del documento).

Aquí va de nuevo, con menos espacios:


SELECT T10.Cliente, SUM(SubTotFac) as Venta, SUM(T10.Devoluciones) as Devolucion
FROM
(
SELECT (T0.CardCode + ' ' + T0.CardName) as Cliente, T0.DocNum, T0.DocTotal, 
SubTotFac=(T0.DocTotal+WTSum-VatSum+DiscSum),
'Devoluciones'=(SELECT SUM(T1.LineTotal) FROM RIN1 T1 WHERE T1.BaseEntry = T0.DocEntry) 
FROM OINV T0
WHERE T0.DocDate BETWEEN '20100101' AND '20100131'
) T10
GROUP BY T10.Cliente
ORDER BY T10.Cliente

Quedo en espera de tus comentarios.

Saludos.

Edited by: Hector Daniel Hernandez Bacca on Feb 24, 2010 5:40 PM

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola:

La consulta que me pones me marca errores en el from, la verdad no entendí bien qué es lo que estás haciendo. Lo que quiero es traer la facturación en una columna y las notas de crédito en otra columna. No debería usar la tabla ORIN. En cuanto a las fechas, estoy de acuerdo en que es mejor en un intervalo de fechas, pero no logro ejecutar la consulta que me proporcionas.

Gracias

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola.

No debes utilizar Union All en la consulta para que no salgan las devoluciones en filas aparte.

Para la columna donde deben ir las devoluciones colocas una subconsulta que traiga le valor requerido.

Además es mejor restringir el informe a un rango de fechas. Algo así:


        SELECT T10.Cliente, SUM(T10.DocTotal) as 'Ventas', SUM(T10.Devoluciones) as 'Devoluciones'
        FROM
        (
            SELECT (T0.CardCode + ' ' + T0.CardName) as Cliente, T0.DocTotal,
                'Devoluciones'=(SELECT SUM(T1.LineTotal) FROM RIN1 T1 WHERE T1.BaseEntry = T0.DocEntry) 
            FROM OINV T0
            WHERE T0.DocDate BETWEEN '[%0]' AND '[%1]'
        ) T10
        GROUP BY T10.Cliente
        ORDER BY T10.Cliente
        

Respecto a la factura, ¿no deberías tomar el subtotal antes de impuestos y retenciones?.

Espero sea de ayuda.

Saludos.

Edited by: Hector Daniel Hernandez Bacca on Feb 24, 2010 2:56 PM

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?