ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Saber quais itens sairão juntamente com outro(Resolvido)

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
valmirluis42
Novato
Novato


Registrado: Segunda-Feira, 17 de Agosto de 2015
Mensagens: 60

MensagemEnviada: Qui Jan 25, 2018 10:16 am    Assunto: Saber quais itens sairão juntamente com outro(Resolvido) Responder com Citação

Bom dia, estou tentando identificar quais produtos saem mais com outro, estou usando o SQL Server, mas o que estou conseguindo é listar os 10 mais por ordem de sequencia ( o campo Produto é a sequencia de cadastrado na tabela Estoque). O código é esse:
Código:
;WITH
VendasContendoProdutoestrategico AS
(
    SELECT v.PRODUTO,
           v.DATA
      FROM ITENS_PED_ORCAMENTO v
      WHERE V.PRODUTO = '1' 
),

RestantesProdutos AS
(
    SELECT v.PRODUTO,
           v.DATA,
           v.REFERENCIA,
           p.descricao,
           v.QUANTIDADE
      FROM ITENS_PED_ORCAMENTO v
      --Ligar outra vez às tabelas vdaitem e produto, desta vez para obter os restantes produtos cupon que contem o código do produto estratégico
   
     INNER JOIN ESTOQUE p
        ON p.ESTOQUE_ID = v.PRODUTO
      AND V.data between '2017-01-01' and '2017-12-01'
      AND p.ESTOQUE_ID <> '1' -- Nao detalhar o item estratégico
       
)
SELECT TOP 10 A.PRODUTO,b.REFERENCIA, A.descricao,
       COUNT(DISTINCT A.REFERENCIA),
       SUM(A.QUANTIDADE)
  FROM RestantesProdutos AS A
  INNER JOIN
  ESTOQUE AS B ON A.PRODUTO= B.ESTOQUE_ID
 GROUP BY A.PRODUTO,B.REFERENCIA, A.descricao
 ORDER BY 4 DESC


Como podem verificar na imagem,

ele só retorna uma sequencia dos menores , e não a real equivalência de frequência de saída .Esses valores que foram demonstrados foram as saídas desses produtos totais, independente do filtro que eu desejo que chamei de produto estratégico. Onde estou errando?


Editado pela última vez por valmirluis42 em Sex Jan 26, 2018 4:26 pm, num total de 2 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Jan 25, 2018 10:39 am    Assunto: Responder com Citação

Bom dia,

Não entendi muito bem a sua query, mas experimente fazer uns testes removendo o Distinct de dentro do Count para ver se é obtido o resultado esperado.

Espero que ajude

_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos!pimentas-comercial_ou_industrial-galpão
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
valmirluis42
Novato
Novato


Registrado: Segunda-Feira, 17 de Agosto de 2015
Mensagens: 60

MensagemEnviada: Qui Jan 25, 2018 11:08 am    Assunto: Responder com Citação

O resultado foi diferente, mas ainda não é o que eu desejo, na figura abaixo fiz por passos:




1- fiz um select para identificar quais pedidos o item de código 303 foi vendido no período de 2017( apareceram em 3 pedidos)
2- peguei e fiz um select nos 3 pedidos para identificar , além do item que 303 , quais outros são repetidos( buscando identificar uma frequência de produtos que saem nos pedidos). Marquei o item de Azul que foi o estudo, e o item de verde que em 2 dos 3 pedidos ele saiu juntamente com o 303.


Editado pela última vez por valmirluis42 em Sex Jan 26, 2018 4:25 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Jan 26, 2018 10:22 am    Assunto: Responder com Citação

Experimente fazer uns testes dessa forma para ver se é obtido o resultado esperado:

Código:
WITH
    CTE_Pedidos as
    (
        SELECT
            CODIGO
        FROM ITENS_PED_ORCAMENTO
        WHERE
            PRODUTO = '303' AND
            data between '2017-01-01' and '2017-12-01'
    )

SELECT TOP(10)
    v.PRODUTO,
    v.REFERENCIA,
    p.descricao,
    COUNT(1)
FROM CTE_Pedidos c
INNER JOIN ITENS_PED_ORCAMENTO v
    ON v.CODIGO = C.CODIGO
INNER JOIN ESTOQUE p
    ON p.ESTOQUE_ID = v.PRODUTO
WHERE 
    v.PRODUTO <> '303'
GROUP BY
    v.PRODUTO,
    v.REFERENCIA,
    p.descricao
ORDER BY
    4 DESC


Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
valmirluis42
Novato
Novato


Registrado: Segunda-Feira, 17 de Agosto de 2015
Mensagens: 60

MensagemEnviada: Sex Jan 26, 2018 4:24 pm    Assunto: Responder com Citação

Funcionou perfeitamente, muito obrigado Imex
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB