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.