Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros 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

 

Compartilhar este post


Link para o post
Compartilhar em outros 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

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por babylon
      Olá galera tudo bem?
      Deixa eu perguntar, estava mexendo no meu site e queria adicionar em html essa tabela porem esta dando erro pois fica assim:
       

      Porem gostaria que ficasse assim:

      Segue o código da tabela:
      <center><table border="0">
          <tr>
      <td bgcolor="#0092df" width="24%"><a href="/categorias?ename=smartphones"><span style="font-size: 20px; color: #ffffff;"><b> <font color="#0092df">..</font>Bicicleta<br> <font color="#0092df">..</font>Track Bikes<br> <font color="#0092df">..</font>Aro 29 TKS</b></a></span><br><br><font size="5"><center><span style="background-color: #A1CD44">DE:</span></font> <br><font size="5"><s>R$ 1.999,99</center></font></s> </td><td><p><a href="/categorias?ename=smartphones"><img src="/static/img/itembicicleta.jpg"><br><font size="5"><center><span style="background-color: #A1CD44">COM - 60%:</span></font> <br><font size="5">1.199,99</font></center></a></td>
             <td><font color="#ffffff">....</font></td>
              <td bgcolor="#0092df" width="24%"><a href="/categorias?ename=smartphones"><span style="font-size: 20px; color: #ffffff;"><b> <font color="#0092df">..</font>Monitor 24"<br> <font color="#0092df">..</font>Samsung<font color="#0092df">aa.aa</font><br> <font color="#0092df">..</font>1ms 144hz</b></a></span></center></td><td><p><a href="/categorias?ename=smartphones"><img src="/static/img/itemmonitor.jpg"></a></td>
          </tr>
          </table></center>
      O que estaria errado, pois não sei como colocar nessa tabela outro fundo de outra cor, veja que usei td bgcolor="#0092df" para o azul escuro mas não sei como usaria pro "#e4f1fb" para o fundo ficar de azul claro em baixo bem como não ficou correto em altura o "DE:" com o "COM - 60%:".
      Bom é isso, obg.


    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • Por dfoliveira82
      Bom dia senhores,
       
      sou novo no Oracle, antes trabalhava com SQL SERVER, e me deparei com algo que ja estou a horas tentando solucionar mas nao consegui.
      Nessa Trigger que vou postar, quando mando compilar ela, fala que esta faltando uma virgula, apos o values, mas nao precisa dela e nao acho onde pode ser essa virgula faltante.
      CREATE OR REPLACE TRIGGER JOBS_CL_INSERE_USUARIO AFTER INSERT OR UPDATE OF EXPORTADA_AVA ON SITE_USUARIOS REFERENCING NEW AS NEW BEGIN INSERT INTO BLACKBEAN.TBL_USERS VALUES (NULL, 'INSERT', NULL, 'db', '0', '0', '0', TO_CHAR(:NEW.CPF), MD5(:NEW.CPF||'port@l'), TO_CHAR(:NEW.CPF), SUBSTRING(:NEW.NOME, 1, INSTR(:NEW.NOME, ' ')-1), SUBSTRING(:NEW.NOME, INSTR(:NEW.NOME, ' ')+1, LEN(:NEW.NOME)), 'email@email.com', NULL, NULL, DATE_TO_UNIX_TS(SYSDATE), NULL, NULL); END; / Se alguem puder me ajudar agradeceria.
    • Por FabianoSouza
      Tenho a tabela VAGAS e a tab INSCRITOS.
       
      Preciso fazer um SELECT para retornar as Vagas e a quantidade de candidatos inscritos para cada VAGA.
       
      Fazendo isso retorna duplicidade de Vagas... :-(
       
      select V.empresa, COunt(CIV.cdVaga) AS insc from dbo.vagas AS V LEFT JOIN dbo.inscVaga AS CIV ON V.codigo = CIV.cdVaga GROUP BY V.codigo, V.empresa Como monto essa consulta??
    • Por Omar~
      Estou com a tarefa de elaborar uma leitura no banco de dados e não estou conseguindo achar uma solução para a instrução de leitura.
      Basicamente tenho uma tabela que de produtos, nela tenho uma coluna para registrar o vendedor e outra para registrar o comprador assim associar esses valores com a tabela de usuários.
      Digamos assim:
      SELECT produto.id, produto.vendedor, produto.comprador, usuarios.id, usuarios.nome FROM produto INNER JOIN usuarios ON produto.vendedor = usuarios.id Com isso tenho a informação do vendedor na tabela de usuários, mas como faria para obter os dados do comprador também?
       
      Uma forma seria executar dois joins na tabela de usuários porém acho que assim me parece mais gabiarra do que o jeito mais coeso de se fazer  (e na verdade foi gabiarra sim porque não sei como proceder)
      Tipo assim:
      SELECT produto.id, produto.vendedor, produto.comprador, a.id AS a_id, a.nome AS a_nome, b.id AS b_id, b.nome AS b_nome FROM produto INNER JOIN usuarios AS a ON produto.vendedor = a.id INNER JOIN usuarios AS b ON produto.comprador = b.id Tem outro jeito? Como?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.