No vídeo de hoje, vamos demonstrar uma query para analisar transferência de produtos.
A dúvida de hoje, nos perguntaram, se seria possível através de uma query SQL, listar os produtos transferidos pela rotina MATA261, e identificar caso algum deles tenha sido transferido incorretamente, por exemplo, o produto era Caneta e foi transferido e o usuário colocou o código errado e virou uma Lapiseira no outro armazém.
Pensando nisso, montamos esse exemplo, onde vamos demonstrar em como fazer uma query relacionando a SD3 de saída (R) com a de entrada (D).
Segue abaixo o vídeo exemplificando:
E abaixo a query desenvolvida:
SELECT TOP 10
SD3R.D3_EMISSAO AS EMISSAO,
SD3R.D3_DOC AS DOCUMENTO,
SD3R.D3_COD AS R_CODIGO,
SB1R.B1_DESC AS R_DESCRI,
SD3R.D3_LOCAL AS R_LOCAL,
SD3R.D3_QUANT AS QUANTIDADE,
SD3D.D3_COD AS D_CODIGO,
SB1D.B1_DESC AS D_DESCRI,
SD3D.D3_LOCAL AS D_LOCAL,
CASE
WHEN SD3R.D3_COD = SD3D.D3_COD THEN 'Mesmo Produto'
ELSE 'Produtos diferentes, verificar!'
END AS OBSERVACAO
FROM
SD3990 SD3R
INNER JOIN SD3990 SD3D ON (
SD3D.D3_FILIAL = SD3R.D3_FILIAL
AND SD3D.D3_NUMSEQ = SD3R.D3_NUMSEQ
AND SD3D.D3_DOC = SD3R.D3_DOC
AND SD3D.D3_CF = 'DE4'
AND SD3D.D_E_L_E_T_ = ' '
)
INNER JOIN SB1990 SB1R ON (
SB1R.B1_FILIAL = ' '
AND SB1R.B1_COD = SD3R.D3_COD
AND SB1R.D_E_L_E_T_ = ' '
)
INNER JOIN SB1990 SB1D ON (
SB1D.B1_FILIAL = ' '
AND SB1D.B1_COD = SD3D.D3_COD
AND SB1D.D_E_L_E_T_ = ' '
)
WHERE
SD3R.D3_FILIAL = '01'
AND SD3R.D3_CF = 'RE4'
AND SD3R.D3_ESTORNO != 'S'
AND SD3R.D_E_L_E_T_ = ' '
--AND SD3R.D3_COD != SD3D.D3_COD /* se quiser trazer apenas o que é diferente entre origem e destino */
ORDER BY
SD3R.R_E_C_N_O_ DESC
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Caro Dan,
Vai uma dica: deixa pra ler a b1 no final, somente dos produtos diferentes, ao invés de ler duas vezes todos os produtos.
Lembrando que banco é i/o, logo quanto menos melhor.
Abraços!
Bom dia Natanael, tudo joia?
Opa, excelente adendo, obrigado pela dica.
Se depois, caso tenha disponibilidade e quiser modificar e disponibilizar gentilmente a query aplicando as melhores práticas, ai nós atualizamos o artigo com o exemplo melhor performático.
Agradeço a dica mais uma vez, e pedimos desculpas por compartilhar de maneira equivocada a query.
Ficamos no aguardo.
Tenha uma ótima e abençoada sexta feira.
Um grande abraço.
Top demais, é desses conteudos que gostamos rsrsr, por mais conteudos assim.
Bom dia Mauro, tudo joia?
Opa, obrigado pelo feedback, ficamos felizes que tenha gostado.
Tenha uma ótima e abençoada sexta feira.
Um grande abraço.