JUNTAR DOIS SELECT COM WHERE DIFERENTES

SQL Server

SQL

30/05/2020

Não sou programador, apenas me arrisco a fazer uns códigos que auxiliam na gestão da minha empresa. Entendo muito pouco.

Preciso levantar do meu banco de dados as vendas por vendedor e criar uma tabela que irá atualizar de tempos em tempos para gerir metas. Consegui fazer os códigos mas não consegui uni-los em um só.


SELECT VENDEDOR,
SUM(VALORPRODUTO) AS TOTAL,
SUM(DESCONTO) AS DESCONTO,
COUNT(DISTINCT NUMERO) AS NVENDAS
FROM DBCONTCOR
WHERE TIPO_VENDA < 6
AND DATA = ''30.05.2020''
AND LOJA = 1
GROUP BY VENDEDOR

Ele me retorna algo assim:
VENDEDOR TOTAL DESCONTO NVENDAS
23 ---------------388,19 --------0,00 ------------10
34 ---------------538,88 --------5,00 ------------21
40 ---------------1060,00--------13,20 ------------21
44 ---------------1275,90 --------20,02 -----------20
77 ---------------863,84 --------21,22 -----------10

O outro código é da mesma tabela, o que muda é o tipo_venda que neste segundo são as devoluções feitas por vendedor. Preciso dessas colunas, à direita das colunas da fórmula anterior. Se não houver devolução o valor vir 0,00.

SELECT VENDEDOR,
SUM(VALORPRODUTO) AS TOTALDEV,
COUNT(DISTINCT NUMERO) AS NVENDASDEV,
SUM(DESCONTO) AS DESCONTOSDEV
FROM DBCONTCOR
WHERE TIPO_VENDA = 7
AND DATA = ''30.05.2020''
AND LOJA = 1
GROUP BY VENDEDOR

RESULTADO DA SEGUNDA:

VENDEDOR TOTALDEV NVENDASDEV DESCONTOSDEV
77 ---------------4,20 ---------------1 ---------------0,42
113 ---------------21,40 ---------------1 ---------------0


Preciso que o retorno em uma seja algo como:

VENDEDOR TOTAL DESCONTO NVENDAS TOTALDEV NVENDASDEV DESCONTOSDEV
23 ---------------388,19 --------0,00 ------------10 ---------------0 ---------------0 ---------------0
34 ---------------538,88 --------5,00 ------------21 ---------------0 ---------------0 ---------------0
40 ---------------1060,00--------13,20 ------------21 ---------------0 ---------------0 ---------------0
44 ---------------1275,90 --------20,02 -----------20 ---------------0 ---------------0 ---------------0
77 ---------------863,84 --------21,22 -----------10 ---------------4,20 ---------------1 ---------------0,42
113 ---------------0 ----------------0 -------------------0 ---------------21,40 ---------------1 ---------------0


Alguém pode me ajudar?
Rodrigo

Rodrigo

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

30/05/2020

Veja se assim funciona:
SELECT
  VENDEDOR,
  SUM(CASE WHEN TIPO_VENDA <= 6 THEN VALORPRODUTO ELSE 0 END) AS TOTAL,
  SUM(CASE WHEN TIPO_VENDA <= 6 THEN DESCONTO ELSE 0 END) AS DESCONTO,
  COUNT(DISTINCT (CASE WHEN TIPO_VENDA <= 6 THEN NUMERO ELSE NULL END)) AS NVENDAS,
  SUM(CASE WHEN TIPO_VENDA = 7 THEN VALORPRODUTO ELSE 0 END) AS TOTALDEV,
  COUNT(DISTINCT (CASE WHEN TIPO_VENDA = 7 THEN NUMERO ELSE NULL END)) AS NVENDASDEV,
  SUM(CASE WHEN TIPO_VENDA = 7 THEN DESCONTO ELSE 0 END) AS DESCONTOSDEV
FROM DBCONTCOR
WHERE DATA = ''''30.05.2020''''
AND LOJA = 1
GROUP BY VENDEDOR
GOSTEI 0
Rodrigo

Rodrigo

30/05/2020

Veja se assim funciona:
SELECT
  VENDEDOR,
  SUM(CASE WHEN TIPO_VENDA <= 6 THEN VALORPRODUTO ELSE 0 END) AS TOTAL,
  SUM(CASE WHEN TIPO_VENDA <= 6 THEN DESCONTO ELSE 0 END) AS DESCONTO,
  COUNT(DISTINCT (CASE WHEN TIPO_VENDA <= 6 THEN NUMERO ELSE NULL END)) AS NVENDAS,
  SUM(CASE WHEN TIPO_VENDA = 7 THEN VALORPRODUTO ELSE 0 END) AS TOTALDEV,
  COUNT(DISTINCT (CASE WHEN TIPO_VENDA = 7 THEN NUMERO ELSE NULL END)) AS NVENDASDEV,
  SUM(CASE WHEN TIPO_VENDA = 7 THEN DESCONTO ELSE 0 END) AS DESCONTOSDEV
FROM DBCONTCOR
WHERE DATA = ''''30.05.2020''''
AND LOJA = 1
GROUP BY VENDEDOR


Funcionou perfeitamente! Muito obrigado!!!!
GOSTEI 0
POSTAR