SQL Vendidos x não Vendidos

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
pssgyn
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Ter, 14 Fev 2017 2:43 pm

Pessoal, boa tarde. Sou iniciante no fórum e também em SQL.

tenho as seguintes tabelas com os seguintes campos (apenas os que vão fazer parte da consulta) :

Selecionar tudo

PRODUTO - codprod
          usuprod - Se for R é produto para revenda
          ativo - pode ser S ou N.

ITEM - codprod
       datavenda
       qtde

ESTOQUE - codprod
          estoque
Preciso fazer uma consulta que traga os produtos vendidos e não vendidos num determinado periodo , que estejam ativos e que sejam de revenda no cadastro de produtos e que o estoque seja maior que zero. A consulta não é para trazer produto a produto, mas sim os totais vendidos e não vendidos.
Estou ainda no processo de aprendizado de SQL, e todas minhas tentativas, ou esbarram em erro na codificação do SQL, ou quando executa, não traz o total, mas sim produto por produto.

Se puderem me ajudar, desde já agradeço .
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5023
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Se possível, coloca pra nós o que você fez. Esse SQL que traz produto por produto.
Falta muito pouco pra você conseguir.
Coloca aqui o que você fez que daí a gente diz o que falta! :-o
pssgyn
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Ter, 14 Fev 2017 2:43 pm

Dr_Gori, bom dia ....

A select que fiz foi uma junção de 2 SQL. Mas não dá certo. Aparece várias linhas, quando o que eu preciso é o total geral. De qualquer forma, obrigado pela atenção.

Selecionar tudo

select count(distinct ite.codprod) as total_vendido

  from tgfite ite

 inner join tgfpro pro
    on pro.codprod = ite.codprod

 inner join tgfcab cab
    on ite.nunota = cab.nunota

 inner join tgfest est
    on est.codprod = pro.codprod

 where pro.ativo      = 'S'
   and est.estoque    > 0
   and pro.usoprod    = 'R'
   and ite.statusnota = 'L'
   and cab.dtneg     >= &periodo_ini
   and cab.dtneg     <= &periodo_fin;

Selecionar tudo

select count(distinct pro.codprod) as total_não_vendido

  from tgfpro pro

  left join tgfite ite
    on ite.codprod = pro.codprod

 inner join tgfcab cab
    on ite.nunota = cab.nunota

 inner join tgfest est
    on est.codprod = pro.codprod

 where pro.ativo      = 'S'
   and est.estoque    > 0
   and pro.usoprod    = 'R'
--   and ite.statusnota = 'L'
   and cab.dtneg     >= &periodo_ini
   and cab.dtneg     <= &periodo_fin;
A tabela tgfcab é o cabeçalho das notas fiscais de venda e a tabela tgfite são os itens da NF que tem os produtos vendidos. A tabela tgfest, contém o estoque de cada produto e a tabela tgfpro é o cadastro de produtos.
pssgyn
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Ter, 14 Fev 2017 2:43 pm

Dr_Gori, bom dia.

Vendo aqui mesmo no fórum Glufke.Net, fui olhando alguns tópicos e me deparei com a solução que eu precisava. Encontrei a resposta. É de um membro do fórum que postou em Dezembro de 2011. Adaptei ao que necessitava e funcionou certinho. Graças a Deus, absorvi mais um conhecimento de SQL.

Obrigado Dr_Gori.
Mensagem em Qua, 21 Dez 2011 3:08 pm
Tente utilizar:

Código: Selecionar todos
SELECT QTIMPFISCAL, QTREDUCAO
FROM (SELECT COUNT(*) QTIMPFISCAL FROM IMPFISCAL WHERE FLATIVO=1)
, (SELECT COUNT(*) QTREDUCAO FROM REDUCAO WHERE (REDUCAO.DTMOVIMENTO = '06/11/2011') AND (REDUCAO.CDEMPRESA IN (4)))

:D :D :D
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante