Ir para conteúdo
  • 0

Consulta sql


Charles Andrade

Pergunta

  • Alunos

Hey incomparáveis, estou fazendo a seguinte consulta no SQL

SELECT

vd.id AS id_produto,

c.id AS id_cliente,

cc.id AS id_contrato,

vd.id_produto ,

cc.id_vd_contrato,

c.razao,

tip.tipo_cliente,

cc.status,

can.motivo,

ven.nome AS vendedor,

vd.qtde,

vd.valor_unit,

COALESCE((SELECT SUM(des.valor)

FROM cliente_contrato_descontos AS des

WHERE des.id_contrato = cc.id

AND vd.id = des.id_vd_contrato_produtos

AND des.origem IN ("M", "A")

AND (des.data_validade IS NULL OR des.data_validade >= CURDATE())), 0) AS desconto_total,

COALESCE((SELECT SUM(acr.valor)

FROM cliente_contrato_acrescimos AS acr

WHERE acr.id_contrato = cc.id

AND vd.id = acr.id_vd_contrato_produtos), 0) AS acrescimo_total,

SUM(vd.valor_unit * vd.qtde ) AS VALOR_BRUTO,

CAST(cc.data_ativacao AS DATE) AS data_ativacao,

CAST(cc.data_cancelamento AS DATE) AS data_cancelamento,

f.id AS id_filial,

f.fantasia AS filial,

SUM(vd.valor_unit * vd.qtde) - COALESCE((SELECT SUM(des.valor)

FROM cliente_contrato_descontos AS des

WHERE des.id_contrato = cc.id

AND vd.id = des.id_vd_contrato_produtos

AND des.origem IN ("M", "A")

AND (des.data_validade IS NULL OR des.data_validade >= CURDATE())), 0)

+ COALESCE((SELECT SUM(acr.valor)

FROM cliente_contrato_acrescimos AS acr

WHERE acr.id_contrato = cc.id

AND vd.id = acr.id_vd_contrato_produtos), 0) AS valor_liquido

FROM

cliente_contrato cc

LEFT JOIN

cliente c ON cc.id_cliente = c.id

LEFT JOIN

vd_contratos_produtos vd ON cc.id_vd_contrato = vd.id_vd_contrato OR cc.id = vd.id_contrato

LEFT JOIN

fn_areceber_mot_cancelamento AS can ON can.id = cc.motivo_cancelamento

LEFT JOIN

tipo_cliente AS tip ON c.id_tipo_cliente = tip.id

LEFT JOIN

vendedor AS ven ON cc.id_vendedor = ven.id

LEFT JOIN

filial AS f ON cc.id_filial = f.id

WHERE

cc.status = "I"

AND c.id <> "2"

AND YEAR(cc.data_cancelamento) = 2024

AND MONTH(cc.data_cancelamento) = 3

AND cc.id = '62206'

GROUP BY

cc.id, c.id, c.razao,

tip.tipo_cliente,

cc.status,

can.motivo,

ven.nome,

vd.qtde,

vd.valor_unit,

vd.id_produto ;

 

 

Onde quero trazer dados desses clientes e o valor liquido que esta sendo calculado com Valor Liquido = Valor Bruto + Acréscimo  - Descontos, o problema em sí esta quando estou trazendo o valor liquido que ele está trazendo os desconto com a data de validade expirados e queria que me trouxesse apenas os com data de validade >= ao dia de hj 

 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Opa meu amigo, teria que usar o is null porque tem datas que não tem validade 

Mas achei a resposta, olhando a documentação do Mariadb eu vi que quando se refere de data e o valor é null ela é igual a 0000-00-00 onde eu só precisei usar a função 

AND (des.data_validade >= CURDATE() or des.data_validade = '0000-00-00')

 

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...