Jump to content
luizfabianochaves

COMPRATIVO ENTRE TABELAS ORACLE

Recommended Posts

buenas pessoal..

 

estou com um problema em um comparativo entre duas tabelas.. uma tabela eu tenho o o resultado das metas e do mix de produtos vendidos na empresa.. calça, camisa, casacos.. etc..

na outra tabela esta o resultado da venda desses produtos.. preciso de um comparativo que me dê o resultado do que foi vendido.. mas o que não foi vendido liste tambem.. quando comparo a coluna MIX_PRODUTO como igual ela traz o resultado da venda correta mas só o que o representante vendeu.. como está na imagem..

quando comparo como diferente ele traz todo o mix.. mas ele lista a soma da venda para todo o mix no caso ali embaixo 110 peças e diminui a quantidade vendida... 

o que preciso é que fique como na segunda imagem.. listando todo o mix, mas aparecendo somente a venda que tem na imagem 1... me fiz entender?

SELECT 
A.CD_MARCA, A.DS_MARCA, A.CD_REPRESENTANTE, A.NM_REPRESENTANTE ,A.DS_MUNICIPIO ,A.DS_SIGLA_EST ,A.CD_CLIENTE ,A.NM_CLIENTE,D.MIX_PRODUTO
,SUM(A.QT_SALDO) as QT_REAL

FROM IM_DEMANDA A
INNER JOIN IM_PERFORMANCE_MIX D ON (D.CD_PERIODO = A.CD_PERIODO) AND (D.CD_MARCA = A.CD_MARCA) AND (D.CD_REPRESENTANTE = A.CD_REPRESENTANTE)

AND (D.MIX_PRODUTO = A.MIX_PRODUTO)

WHERE
A.CD_CLIENTE = '379'
AND A.CD_MARCA = '3'
AND A.CD_PERIODO = '8'

GROUP BY
A.CD_MARCA, A.DS_MARCA, A.CD_REPRESENTANTE, A.NM_REPRESENTANTE, A.DS_MUNICIPIO, A.DS_SIGLA_EST
,A.CD_CLIENTE
,A.NM_CLIENTE
,D.MIX_PRODUTO

2.png.037b6b1810a581aeeeeb3da98cb2b97c.png

SELECT 
A.CD_MARCA, A.DS_MARCA, A.CD_REPRESENTANTE, A.NM_REPRESENTANTE ,A.DS_MUNICIPIO ,A.DS_SIGLA_EST ,A.CD_CLIENTE ,A.NM_CLIENTE,D.MIX_PRODUTO
,SUM(A.QT_SALDO) as QT_REAL

FROM IM_DEMANDA A
INNER JOIN IM_PERFORMANCE_MIX D ON (D.CD_PERIODO = A.CD_PERIODO) AND (D.CD_MARCA = A.CD_MARCA) AND (D.CD_REPRESENTANTE = A.CD_REPRESENTANTE)

AND (D.MIX_PRODUTO <> A.MIX_PRODUTO)

WHERE
A.CD_CLIENTE = '379'
AND A.CD_MARCA = '3'
AND A.CD_PERIODO = '8'

GROUP BY
A.CD_MARCA, A.DS_MARCA, A.CD_REPRESENTANTE, A.NM_REPRESENTANTE, A.DS_MUNICIPIO, A.DS_SIGLA_EST
,A.CD_CLIENTE
,A.NM_CLIENTE
,D.MIX_PRODUTO

1.png.f0cd90a55d0d57491ba71fef8e0e6ed9.png

 

Share this post


Link to post
Share on other sites

Uma solução nestes casos é forçar um valor zerado (por UNION)  para que os produtos não vendidos sejam comparados, segue exemplo.

Share this post


Link to post
Share on other sites
3 horas atrás, Motta disse:

Uma solução nestes casos é forçar um valor zerado (por UNION)  para que os produtos não vendidos sejam comparados, segue exemplo.

Continua com o resultado de quatro linhas.. mas não sei se fiz da maneira correta..

 


 

SELECT 

A.CD_MARCA
,A.DS_MARCA
,A.CD_REPRESENTANTE
,A.NM_REPRESENTANTE
,A.DS_MUNICIPIO
,A.DS_SIGLA_EST
,A.CD_CLIENTE
,A.NM_CLIENTE
,D.MIX_PRODUTO
--,D.QT_META
,SUM(A.QT_SALDO) AS QT_REAL
--,SUM(A.VL_SALDONEG) AS VL_REAL

FROM IM_DEMANDA A
LEFT JOIN IM_PERFORMANCE_MIX D ON D.CD_PERIODO = A.CD_PERIODO AND D.CD_MARCA = A.CD_MARCA AND D.CD_REPRESENTANTE = A.CD_REPRESENTANTE AND D.MIX_PRODUTO = A.MIX_PRODUTO

WHERE

A.CD_MARCA = '3'
AND A.CD_PERIODO = '8'
AND NOT A.CD_REPRESENTANTE = 90020
AND A.CD_CLIENTE = 379

GROUP BY

A.CD_MARCA
,A.DS_MARCA
,A.CD_REPRESENTANTE
,A.NM_REPRESENTANTE
,A.DS_MUNICIPIO
,A.DS_SIGLA_EST
,A.CD_CLIENTE
,A.NM_CLIENTE
,D.MIX_PRODUTO

UNION ALL

SELECT 

A.CD_MARCA
,A.DS_MARCA
,A.CD_REPRESENTANTE
,A.NM_REPRESENTANTE
,A.DS_MUNICIPIO
,A.DS_SIGLA_EST
,A.CD_CLIENTE
,A.NM_CLIENTE
,D.MIX_PRODUTO
--,D.QT_META
,SUM(A.QT_SALDO) AS QT_REAL
--,SUM(A.VL_SALDONEG) AS VL_REAL

FROM IM_DEMANDA A
LEFT JOIN IM_PERFORMANCE_MIX D ON D.CD_PERIODO = A.CD_PERIODO AND D.CD_MARCA = A.CD_MARCA AND D.CD_REPRESENTANTE = A.CD_REPRESENTANTE AND D.MIX_PRODUTO = A.MIX_PRODUTO

WHERE

A.CD_MARCA = '3'
AND A.CD_PERIODO = '8'
AND NOT A.CD_REPRESENTANTE = 90020
AND D.MIX_PRODUTO = '  '
AND A.MIX_PRODUTO = '  '
AND A.CD_CLIENTE = '379'
--AND B.CD_PERIODO IN ('6', '7','8')

GROUP BY

A.CD_MARCA
,A.DS_MARCA
,A.CD_REPRESENTANTE
,A.NM_REPRESENTANTE
,A.DS_MUNICIPIO
,A.DS_SIGLA_EST
,A.CD_CLIENTE
,A.NM_CLIENTE
,D.MIX_PRODUTO
--,D.QT_META
,D.MIX_PRODUTO
--,A.QT_SALDO

 

Share this post


Link to post
Share on other sites

Você tem de usar o sql das metas e o sql das vendas , você precisa cruzá-las

 

grosso modo

 

--metas

select cod_produto, valor_meta

from  metas 

 

--vendas

select cod_produto,sum(valor0 valor_venda

from vendas

group by cod_produto

 

só que nem todo produto foi vendido , assim se cria uma sql saindo do zero

 

--produtos

select cod_produto ,0 valor_venda

from produto

 

--unindo 

select cod_produto,sum(valor_venda) valor_venda

from

(

select cod_produto,sum(valor0 valor_venda

from vendas

group by cod_produto

union all

select cod_produto ,0 valor_venda

from produto

) group by cod_produto

 

---comparando

select *

from 

(

select cod_produto, valor_meta

from  metas) meta,

(

select cod_produto,sum(valor_venda) valor_venda

from

(

select cod_produto,sum(valor0 valor_venda

from vendas

group by cod_produto

union all

select cod_produto ,0 valor_venda

from produto

) group by cod_produto

) venda

where venda.cod_produto = meta.cod_produto

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By asacap1000
      Salve Galera, tenho uma tabela no banco de dados que estão salvos os dados de fotos armazenadas, uma das tabela consta o caminho das mesmas.
      Hoje consigo buscar estas fotos, mostrar na tela do site tudo certo. Porém estou precisando adicionar um botão para o envio de email com estas imagens em anexos.
      Saberiam me dizer como posso fazer isso?
      Tenho um formulário com os campos Remetente: Nome / Email  - Destinatário: Nome / Email
      e o campo de input file porém as imagens não carregam. Fiz um teste assim:
       
      <div class="input_fields_wrap"> <?php while ($row = oci_fetch_object($stmt2)) { ?> <div><input type="file" name="fotos[]" value="<?=$string3?>" multiple></div> <? }?> </div> Ele carrega assim até lista a quantidade de imagens na consulta mas não carrega as imagens.
       

    • By José Peixoto
      Olá,
       
      há alguma forma de fazer uma trigger só ser executada depois que a outra executar? 
       
      Por exemplo: a trigger2 só é disparada quando a trigger1 fizer o commit das informações.
       
      Obrigado desde já :)
    • By RodrigoWD3
      Pessoal e o seguinte estou com uma lista no banco de dados lista de nomes,  gostaria que fosse exibido essas listas em duas colunas do bootstrap, só consigo exibir em uma unica coluna usando o while, como faço para dividir em duas colunas usando o bootstrap e php. obrigado 
    • By asacap1000
      Salve galera. estou com uma zica aqui e não vai.
      Tenho um servidor WEB final IP final 120 neste servidor eu acesso um banco de dados de outro servidor 122, tem uma tabela com fotos e precisaria mostrar estas fotos na intranet. porém ele me mostra o caminho mas não mostra a imagem.
       
      Na Tabela está sendo salvo desta forma:
      Z:/Avarias/FOTOS/Alfandegado/2020/01.%20JANEIRO/14.01.2020/AVARIA%20CLIENTE%20CN=%20191234%20(2).JPG
       
      Chamei ele na tela desta forma:
      <?php ociexecute($stmt2,OCI_DEFAULT); while ($row = oci_fetch_object($stmt2)) { $string = OCIResult ($stmt2 ,1); ///link da avaria $avaria = OCIResult ($stmt2 ,2); ///titulo da avaria ?> <a href="<?=$string ?>" width="20%" height="30%" data-lightbox="gallery" > <button type="button" class="btn btn-dark active" data-toggle="modal" data-target="#modalExemplo"> <img src="<?=$string?>" width="160" height="100" class="rounded" title="<?=$avaria?>"> <br> </button> Na tela aparece desta forma:

       
      Se eu clicar na imagem fica assim apenas carregando:
       

       
      Se eu mandar abrir em nova guia a imagem aparece essa mensagem:

      Se eu copiar o link com botão direito e abrir no navegador ela abre normalmente.
       
      Ah lembrando que são tres servidores 120 web, 122 banco de dados, 128 as fotos onde salva como mapeamento Z://
      Alguem teria alguma idéia de como chamar estas fotos???
       
    • By Motta
      Google e Oracle decidem na Suprema Corte briga judicial sobre Android
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.