Consulta em SQL para retornar a última entrada dos produtos baseada nas Notas de Entrada

Criado por Joaquim Gaspar em 10/01/2025 20:22  ·  Atualizado em 14/01/2025 14:44  ·  Leitura: 4 min

/* Consulta retorna a última entrada dos produtos baseada nas Notas de Entrada */

/* Listando: Número da Nota, Código de Fornecedor, Estado, Alíquota de ICMS, Substituição Tributária e Data de Emissão. */

/* Consulta otimizada (tempo de execução: 1 segundo) */

 

SELECT 

    NF.CODPROD,

    NF.NUMERONF,

    NF.CODFORNEC,

    F.ESTADO,

    NF.ALIQICM,

    NF.SUBSTRIB,

    NC.DT_EMISSAO

FROM 

    NFENTRI NF

INNER JOIN 

    NFENTRC NC ON NF.NUMERONF = NC.NUMERONF

INNER JOIN 

    FORNECE F ON NF.CODFORNEC = F.CODFORNEC

INNER JOIN (

    SELECT 

        NF2.CODPROD,

        MAX(NC2.DT_EMISSAO) AS MAX_DT_EMISSAO

    FROM 

        NFENTRI NF2

    INNER JOIN 

        NFENTRC NC2 ON NF2.NUMERONF = NC2.NUMERONF

    GROUP BY 

        NF2.CODPROD

                   ) MaxD ON NF.CODPROD = MaxD.CODPROD AND NC.DT_EMISSAO = MaxD.MAX_DT_EMISSAO;

 

/*Consulta Otimizada por Filial */

 

SELECT 

    NF.CODEMPRESA,

    NF.CODPROD,

    NF.NUMERONF,

    NF.CODFORNEC,

    F.ESTADO,

    NF.ALIQICM,

    NF.SUBSTRIB,

    NC.DT_EMISSAO

FROM 

    NFENTRI NF

INNER JOIN

    NFENTRC NC ON NF.NUMERONF = NC.NUMERONF

INNER JOIN 

    FORNECE F ON NF.CODFORNEC = F.CODFORNEC

INNER JOIN (

    SELECT 

        NF2.CODPROD,

        MAX(NC2.DT_EMISSAO) AS MAX_DT_EMISSAO

    FROM 

        NFENTRI NF2

    INNER JOIN 

        NFENTRC NC2 ON NF2.NUMERONF = NC2.NUMERONF

    GROUP BY 

        NF2.CODPROD

      ) MaxD ON NF.CODPROD = MaxD.CODPROD AND NC.DT_EMISSAO = MaxD.MAX_DT_EMISSAO

WHERE 

    NF.CODEMPRESA = '01';

 

 

/* Consulta Lenta (7 minutos) Não utilizar */

 

SELECT 

    NF.CODPROD,

    NF.NUMERONF,

    NF.CODFORNEC,

    F.ESTADO,

    NF.ALIQICM,

    NF.SUBSTRIB,

    NC.DT_EMISSAO

FROM 

    NFENTRI NF

INNER JOIN 

    NFENTRC NC ON NF.NUMERONF = NC.NUMERONF

INNER JOIN 

    FORNECE F ON NF.CODFORNEC = F.CODFORNEC

WHERE 

    NC.DT_EMISSAO = (

        SELECT MAX(NC2.DT_EMISSAO)

        FROM NFENTRC NC2

        INNER JOIN NFENTRI NF2 ON NC2.NUMERONF = NF2.NUMERONF

        WHERE NF2.CODPROD = NF.CODPROD

                               );

 

 

 

DESCRIÇÃO

AUTOR

VERSÃO E DATA

Documento Inicial

Túlio Alcântara e Joaquim Gaspar

v1.0 – 08/11/2024