Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

Duvida SQL


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

Recommended Posts

  • Membros Pro

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 to comment
Share on other sites

  • Moderadores

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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.