Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×
AVISO AOS MEMBROS:

Fizemos uma atualização em 18/06/2023, e a forma de acesso ao Fórum mudou. Não mais está sendo aceito o login pelo Nome de Exibição cadastrado. Agora, apenas pelo email e pelos integradores de Login do Facebook, Google e Microsoft. O Facebook estava com uma validação pendente e já foi normalizado o acesso, já o Google, ainda estamos verificando o que está ocorrendo que não está funcionando.
Caso precisem de ajuda para o login pelo email acesse o link << Esqueci minha senha de acesso>> ou nos envie um pedido de ajuda pelo email admin@forumrm.com.br

Administração
ForumRM

Movimento do Cliente (Ultimo) - Rm Nucleus ?


mclpaltrin

Posts Recomendados


  • Tópicos Que Criei:  86
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  255
  • Conteúdo/Dia:  0.05
  • Reputação:   0
  • Pontos/Conquistas:  2.325
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Prezados!

- Tenho esse Query abaixo que traz o movimento do cliente seria o Estoque Anterior, a minha duvida é a seguinte:

para a Data e Cliente informado se nao tiver movimento na data informada como faço para pegar o ultimo movimento dele no banco ??

exemplo: na data 23-01-2009 ele tem esse Estoque aqui:

Produtos Quantidades

BARRIL 05 LITROS 0.0000

BARRIL 10 LITROS 0.0000

BARRIL 15 LITROS 1.0000

BARRIL 20 LITROS 0.0000

BARRIL 30 LITROS 18.0000

BARRIL 50 LITROS 4.0000

Agora quando informo a da 25-01-2009 para o mesmo cliente o retorno é esse:

Produtos Quantidades

BARRIL 05 LITROS 0.0000

BARRIL 10 LITROS 0.0000

BARRIL 15 LITROS 0.0000

BARRIL 20 LITROS 0.0000

BARRIL 30 LITROS 0.0000

BARRIL 50 LITROS 0.0000

Como faço para ele retornar os dados do primeiro exemplo:

informado a data 25-01-2009...??

Produtos Quantidades

BARRIL 05 LITROS 0.0000

BARRIL 10 LITROS 0.0000

BARRIL 15 LITROS 1.0000

BARRIL 20 LITROS 0.0000

BARRIL 30 LITROS 18.0000

BARRIL 50 LITROS 4.0000

---------------------------------------------------------------------------------CONSULTA

SELECT

P.NOMEFANTASIA AS 'PRODUTO',SUM(ISNULL(I.QUANTIDADE,0))AS 'QUANTIDADE'

FROM TPRD AS P

LEFT JOIN

(SELECT I.IDPRD, I.CODCOLIGADA , I.QUANTIDADE

FROM TITMMOV AS I

INNER JOIN TMOV AS M ON M.IDMOV = I.IDMOV AND M.CODCOLIGADA = I.CODCOLIGADA

INNER JOIN FCFO AS C ON C.CODCFO = M.CODCFO AND M.CODCOLCFO = C.CODCOLIGADA

WHERE C.NOME =:CLIENTE_S AND M.DATALANCAMENTO =:DATA_D AND CODTMV= '1.2.53'

GROUP BY I.IDPRD, I.CODCOLIGADA, I.QUANTIDADE)

AS I ON P.IDPRD = I.IDPRD AND P.CODCOLIGADA = I.CODCOLIGADA

WHERE P.IDPRD IN ('92','93','94','95','96','234')

GROUP BY P.NOMEFANTASIA

-------------------------------------------------------------------------------------FIM

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  86
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  255
  • Conteúdo/Dia:  0.05
  • Reputação:   0
  • Pontos/Conquistas:  2.325
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

- Bom dia Amigos

- Alguém tem alguma idéia para resolver essa Query que preciso??

- Muito Obrigado!

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  76
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  425
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  51

Usando TOP não resolve o seu problema?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  2
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  69
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  365
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  38

Já tentou fazer uma sub-consulta usando ordenação decrescente ?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  86
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  255
  • Conteúdo/Dia:  0.05
  • Reputação:   0
  • Pontos/Conquistas:  2.325
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Bom dia a todos

- Como ficaria uma sub-consulta na query acima, não sou especialista em consultas SQL, por enquanto ...

- Podem me ajudar ?

- Muito Obrigado!

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  86
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  255
  • Conteúdo/Dia:  0.05
  • Reputação:   0
  • Pontos/Conquistas:  2.325
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Prezados amigos

- Fiz algumas modificações na minha Query aparentemente está ok.. vou realizar mais teste, peço a suas analises da query abaixo pfavor.

-------------------------------------------------------------------------

---&& ESTOQUE ANTERIOR DE BARRIL ---&&

SELECT TPRD.NOMEFANTASIA AS 'PRODUTOS',

ISNULL(SUM(X.QUANTIDADE),0) AS 'QUANTIDADE'

FROM TPRD

LEFT JOIN

(

SELECT I.CODCOLIGADA, M.DATASAIDA, I.IDPRD, I.QUANTIDADE

FROM TITMMOV AS I

INNER JOIN TMOV AS M ON M.IDMOV = I.IDMOV AND M.CODCOLIGADA = I.CODCOLIGADA

INNER JOIN FCFO AS C ON C.CODCFO = M.CODCFO AND M.CODCOLCFO = C.CODCOLIGADA

INNER JOIN TPRD AS P ON P.IDPRD = I.IDPRD AND P.CODCOLIGADA = I.CODCOLIGADA

WHERE C.CODCFO = '00000010' AND M.DATASAIDA < '20090205'

AND M.DATASAIDA >=

(

SELECT MAX(DATASAIDA)

FROM TMOV, TITMMOV

WHERE TMOV.CODCOLIGADA = TITMMOV.CODCOLIGADA

AND TMOV.IDMOV = TITMMOV.IDMOV

AND TITMMOV.IDPRD = I.IDPRD

AND TMOV.CODCOLIGADA = M.CODCOLIGADA

AND DATASAIDA < '20090205'

)

AND M.CODTMV = '1.1.52'

GROUP BY I.CODCOLIGADA, M.DATASAIDA, I.IDPRD, I.QUANTIDADE

)

X ON X.IDPRD = TPRD.IDPRD AND X.CODCOLIGADA = TPRD.CODCOLIGADA

WHERE TPRD.IDPRD IN ('92','93','94','95','96','234')

GROUP BY

TPRD.NOMEFANTASIA

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  2
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  69
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  365
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  38

Sim, apenas não entendi pq vc fez usou uma consulta recursiva, poderia usar o left join direto na tabela de movimentos, mas irá funcionar, com um desempenho acho que ruim dependendo do tanto de informação na sua base, mas como eu digo, faça o simples e funcional... ;) , funcionando e com um desempenho razoável.. fechou a balada.

Att

_________________________________

Nelson Borges Jr.

Microsoft Partner GOLD Developer C# && SQL Server

Prezados amigos

- Fiz algumas modificações na minha Query aparentemente está ok.. vou realizar mais teste, peço a suas analises da query abaixo pfavor.

-------------------------------------------------------------------------

---&& ESTOQUE ANTERIOR DE BARRIL ---&&

SELECT TPRD.NOMEFANTASIA AS 'PRODUTOS',

ISNULL(SUM(X.QUANTIDADE),0) AS 'QUANTIDADE'

FROM TPRD

LEFT JOIN

(

SELECT I.CODCOLIGADA, M.DATASAIDA, I.IDPRD, I.QUANTIDADE

FROM TITMMOV AS I

INNER JOIN TMOV AS M ON M.IDMOV = I.IDMOV AND M.CODCOLIGADA = I.CODCOLIGADA

INNER JOIN FCFO AS C ON C.CODCFO = M.CODCFO AND M.CODCOLCFO = C.CODCOLIGADA

INNER JOIN TPRD AS P ON P.IDPRD = I.IDPRD AND P.CODCOLIGADA = I.CODCOLIGADA

WHERE C.CODCFO = '00000010' AND M.DATASAIDA < '20090205'

AND M.DATASAIDA >=

(

SELECT MAX(DATASAIDA)

FROM TMOV, TITMMOV

WHERE TMOV.CODCOLIGADA = TITMMOV.CODCOLIGADA

AND TMOV.IDMOV = TITMMOV.IDMOV

AND TITMMOV.IDPRD = I.IDPRD

AND TMOV.CODCOLIGADA = M.CODCOLIGADA

AND DATASAIDA < '20090205'

)

AND M.CODTMV = '1.1.52'

GROUP BY I.CODCOLIGADA, M.DATASAIDA, I.IDPRD, I.QUANTIDADE

)

X ON X.IDPRD = TPRD.IDPRD AND X.CODCOLIGADA = TPRD.CODCOLIGADA

WHERE TPRD.IDPRD IN ('92','93','94','95','96','234')

GROUP BY

TPRD.NOMEFANTASIA

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  86
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  255
  • Conteúdo/Dia:  0.05
  • Reputação:   0
  • Pontos/Conquistas:  2.325
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline

Bom dia Nelson Borges

- Muito obrigado pela dia, espero contar com a sua ajuda... nós próximos desafios.... ;)

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.