¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como exibir a coluna de Cancelamentos ao lado de Vendas a Crédito em uma consulta SQL

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

Boa tarde:

Tenho a seguinte consulta:

SELECT * FROM (

SELECT distinct T0.Cardcode ' ' T0.Cardname 'Cliente', sum(T0.DocTotal) 'Vendas a Crédito' ,0 as Cancelamentos 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

Meu problema é que quero que a coluna de cancelamentos, que possui valores, apareça ao lado da coluna de Vendas a Crédito correspondente ao cliente; ou seja:

Cliente Vendas a Crédito Cancelamentos

01 Claudia 12000 100

E agora está aparecendo da seguinte forma:

Cliente Vendas a Crédito Cancelamentos

01 Claudia 12000 0

01 Claudia 0 100

Obrigado!

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

4 Respuestas

0
Cargando...

Olá.

Quando substitui as datas fixas por variáveis de entrada, ocorre o erro que você menciona.

Para que funcione corretamente, copie e cole 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

Assim deve funcionar corretamente.

Me conte como foi.

Saudações.

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

Olá.

Você copiou e colou a consulta exatamente como está no post? Aqui está funcionando bem.

A consulta faz o que você está pedindo:

- na coluna DocTotal traz o total do documento conforme você tinha.

- na coluna Devoluções, a subconsulta soma as linhas dos Créditos de Nota que têm como documento base a fatura.

É desenvolvido em duas etapas, de forma semelhante ao que você propôs inicialmente:

- na primeira etapa, as faturas são relacionadas com o total de devoluções com NC.

- na segunda, as faturas e devoluções são totalizadas por cada cliente (SN).

Vai precisar de um pouco mais de refinamento, de acordo com o que você precisa. Por exemplo, o que você perguntou sobre o subtotal com descontos e antes de impostos e retenções.

Os créditos de nota são vinculados às faturas pelas linhas do documento, por isso uso a tabela RIN1 (linhas do documento) e não ORIN (cabeçalho do documento).

Aqui está novamente, com menos espaços:


SELECT T10.Cliente, SUM(SubTotFac) as Venda, SUM(T10.Devoluciones) as Devolução
FROM
(
SELECT (T0.CardCode + ' ' + T0.CardName) as Cliente, T0.DocNum, T0.DocTotal, 
SubTotFac=(T0.DocTotal+WTSum-VatSum+DiscSum),
'Devoluções'=(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

Fico aguardando seus comentários.

Saudações.

Editado por: Hector Daniel Hernandez Bacca em 24 de fevereiro de 2010 às 17:40

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

Olá:

A consulta que você me enviou está apresentando erros no "from", na verdade não entendi muito bem o que você está fazendo. O que eu quero é trazer a faturação em uma coluna e as notas de crédito em outra coluna. Não deveria usar a tabela ORIN. Quanto às datas, concordo que é melhor em um intervalo de datas, mas não consigo executar a consulta que você forneceu.

Obrigado

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

Olá.

Não deve usar Union All na consulta para evitar que os retornos apareçam em linhas separadas.

Para a coluna onde os retornos devem estar, coloque uma subconsulta que traga o valor necessário.

Além disso, é melhor restringir o relatório a um intervalo de datas. Algo assim:


        SELECT T10.Cliente, SUM(T10.DocTotal) as 'Vendas', SUM(T10.Devoluções) as 'Devoluções'
        FROM
        (
            SELECT (T0.CardCode + ' ' + T0.CardName) as Cliente, T0.DocTotal,
                'Devoluções'=(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
        

Em relação à fatura, não deveria considerar o subtotal antes dos impostos e retenções?

Espero que seja útil.

Saudações.

Editado por: Hector Daniel Hernandez Bacca em 24 de fevereiro de 2010 às 14:56

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?