• 0
Sign in to follow this  
Jonathan Kloh

SELECT QUE RETORNA REGISTROS MESMO SEM RELAÇÃO

Question

Preciso de ajuda na formação de uma consulta, 

tenho 4 tabelas (comissão, pessoa, pedido, pedidoitem). Então preciso trazer todas as pessoas e seus valores de metas mesmo que não tenha ainda valores em pedido. fiz um select o problema que ele não retorna a pessoa quando não tem pedido pra essa pessoa.

Quero que ele retorne por exemplo: nome da pessoa/ meta/ valoralcançado

meu código está assim até agora:

SELECT
  [PESSOA].[Fantasia] AS REPRESENTANTE,
  [METAS].[MetaValorMinimoBase] AS META,
  SUM(ISNULL(PDV_PedidoItemValorTotal,0)) AS Valor


FROM COM_METAS
  FULL JOIN PESSOA ON METAS.MetaRepCod = PESSOA.Codigo
  LEFT JOIN PEDIDO ON PESSOA.Codigo = PEDIDO.PedidoRepresentante
  LEFT JOIN PEDIDOITEM ON PEDIDO.PedidoCodigo = PEDIDOITEM.PedidoCodigo

WHERE PEDIDO.PedidoExcluido = 'N' and
PEDIDO.PedidoTipoMovimentoCodigo IN (1,5,6) AND
PEDIDO.PedidoSituacao IN ('A','B','O','T','E')AND
PEDIDO.PedidoDataEmissao BETWEEN '01/06/2018'  AND '05/06/2018'

GROUP BY
  [PESSOA].[Fantasia],
  [METAS].[MetaValorMinimoBase]

Order by [PESSOA].[Fantasia]

RETORNO :

JOÃO      |60000    |697569
PEDRO     |240000   |1374417
MARIA     |60000    |67995
FRANCISCO |200000   |2376976
ZÉ        |NULL     |23423
ROMARIO   |20000    |NULL

Quero que me traga as outras pessoas que tem metas mesmo que não tenha valor.

Ele até retorna as pessoas com meta null, mas quero que retorne também os que tem valor(dos pedidos) null ou 0 no caso.

 Resumindo: preciso que o select me traga também as pessoas e meta que não tem pedidos ainda, mas tem cadastro retornando o valor como null. Que o código assim me traz todas as pessoas e meta que contem pedido. A ideia é me retornar todas as pessoas que tem metas e valores que já alcançou mesmo que não tenha valor.

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Sim existe as duas possibilidades. Quase consegui o que desejo rsrsrs, retirei o where e trouxe quase oque quero só por um detalhe, ele está retornando todos as pessoas com metas + o valor das pessoas que não tem meta o problema que não está mostrando o nome dessas pessoas que a meta ficou null. Ficou como esse exemplo no primeiro campo.

null      |  null  |697569
PEDRO     |240000   |1374417
MARIA     |60000    |67995
FRANCISCO |200000   |2376976
ZÉ        |NULL     |23423
ROMARIO   |20000    |NULL

Resolvido! Retirei o where e fiz a condição direto no join e adicionei um OR na junção com a pessoa para me trazer os nomes quando tiver tanto relação com a meta como com o pedido.

SELECT

  PESSOA.Fantasia AS REPRESENTANTE,
  METAS.MetaValorMinimoBase AS META,
  COALESCE(SUM(PEDIDOITEM.PedidoItemValorTotal),0) AS Valor
 
FROM PEDIDO
  INNER JOIN PEDIDOITEM ON PEDIDO.PedidoCodigo = PEDIDOITEM.PedidoCodigo
AND 
PEDIDO.PedidoExcluido = 'N' and
PEDIDO.PedidoTipoMovimentoCodigo IN (1,5,6) AND
PEDIDO.PedidoSituacao IN ('A','B','O','T','E')AND
PEDIDO.PedidoDataEmissao BETWEEN '01/06/2018'  AND '05/06/2018'
  FULL JOIN METAS ON PEDIDO.PedidoRepresentante = METAS.MetaRepCod
  LEFT JOIN PESSOA ON  METAS.MetaRepCod = PESSOA.Codigo or
  PEDIDO.PedidoRepresentante = PESSOA.Codigo



GROUP BY
  PESSOA.Fantasia,
  METAS.MetaValorMinimoBase,

Order by PESSOA.Fantasia

 

Edited by Jonathan Kloh
detalhe2

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this