Ir para conteúdo
  • Cadastre-se

dev botao

Duvida SQL


  • Este tópico foi criado há 969 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Ola todos.

Tenho com seguinte duvida na sql com o comando (WITH)

Exemplo
Tabela A = Movimentação interna do produto
Registro A – 01/01/21
Registro A – 01/01/21
Registro A – 02/01/21
Registro A – 02/01/21
Registro A – 03/01/21
Registro A – 03/01/21
Registro A – 04/01/21


Tabela B = Compra de mercadoria – Cabeçalho.
   Nota = A Fornecedor XX – 01/01/21
Tabela C = Item da nota fiscal
Produto A  
Produto b  
Produto c  
Produto d  

Tabela b = Compra de mercadoria – Cabeçalho.
   Nota = A Fornecedor XX – 02/01/21
Tabela C = Item da nota fiscal
Produto A  
Produto b  
Produto c  
Produto d  

Tabela c = Compra de mercadoria – Cabeçalho.
   Nota = A Fornecedor XX – 03/01/21
Tabela C = Item da nota fiscal
Produto A  
Produto b  
Produto c  
Produto d  

Como fazer a sql na tabela de movimentação do produto do período de movimento, exibindo a ultima nota de entrada do produto.
Atenciosamente,
Marco Antonio.

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Buenos,

Não tenho cenário de teste aqui do sql server, mas acho que pode ser algo próximo disso:

With NFE AS
(

SELECT 
ITEM.CODPROD,
MAX(NFE.NUMERO) AS ULTNFE
FROM TABELAC ITEM
INNER JOIN TABELAB NFE ON NFE.CODNFE = ITEM.CODNFE
WHERE ITEM.CODPROD = MOV.CODPROD
AND NFE.DTEMISSAO BETWEEN :DTINI AND :DTFIN
GROUP BY
ITEM.CODPROD
)
SELECT
MOV.CODPROD,
NFE.ULTNFE
FROM TABELAA MOV
LEFT JOIN NFE ON NFE.CODPROD = MOV.CODPROD
WHERE MOV.DTMOV BETWEEN :DTINI AND :DFIN

Eu sinceramente usaria assim, a menos que o with traga melhora de performance.

SELECT
  MOV.CODPROD,
  (SELECT MAX(NFE.NUMERO)
     FROM TABELAC ITEM
     INNER JOIN TABELAB NFE ON NFE.CODNFE = ITEM.CODNFE
     WHERE ITEM.CODPROD = MOV.CODPROD
      AND NFE.DTEMISSAO BETWEEN :DTINI AND :DTFIN )  AS ULTNFE
  FROM TABELAA MOV
  WHERE MOV.DTMOV BETWEEN :DTINI AND :DTFIN

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 969 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.