Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nicolasbessa

Performance Query SQL (ANSI)

Recommended Posts

Galera,

Uma ajuda, Por gentileza!

 

Tenho a query abaixo para ser trabalhada a performance. A mesma é uma view, realiza consulta diversas vezes na mesma tabela para montar alguns campos.

Gostaria de ideias para melhorar a mesma, desde já agradeço!

 


  CREATE OR REPLACE FORCE EDITIONABLE VIEW "LF"."VW_CTM_JNJ_ENTSAI_TABLEAU" ("TIPO_NF", "COD_HOLDING", "COD_MATRIZ", "COD_FILIAL", "ID_NF", "NUM_NF", "SERIE", "COD_MODELO", "COD_CFOP_LEGAL", "COD_CLIFOR", "DT_EMISSAO", "DT_LANCAMENTO", "DT_ENTRADA", "COD_STATUS", "COD_UF", "MUNICIPIO", "RAZAOSOCIAL", "CGC_CPF", "VLR_TOTAL_PRODUTOS", "TOTAL_ITEM", "ICMS_BASE_TOTAL", "ICMS_VALOR_TOTAL", "ICMS_ST_BASE_TOTAL", "ICMS_ST_VALOR_TOTAL", "VLR_FRETE", "VLR_SEGURO", "VLR_DESPESAS", "IPI_TRIBUTADO", "IPI_NAO_TRIBUTADO", "DOCNUM", "ID_ITEM", "COD_PRODUTO", "COD_UNID_MEDIDA", "COD_CLASSIF_FISCAL", "QUANTIDADE", "VLR_UNITARIO", "VLR_DESCONTO", "DESCRICAO_NOTA", "DIG_CFOP", "COD_GRP_PRODUTO", "COD_IVA", "COD_ORIGEM_PROD", "CTA_CTB_MATERIAL", "LANCTO_CONTABIL", "CHAVE_NF_E", "NUMERO_DI", "COD_TRIBUT_ICMS", "COD_SIT_TRIB_IPI", "COD_IMPOSTO", "BASE_CALCULO_1", "BASE_CALCULO_2", "BASE_CALCULO_3", "VLR_IMPOSTO_ICMS_1", "VLR_IMPOSTO_ICMS_2", "ALIQUOTA_ICMS_1", "ALIQUOTA_ICMS_2", "COD_TRIBUT_IPI", "BASE_CALCULO_IPI_1", "BASE_CALCULO_IPI_2", "BASE_CALCULO_IPI_3", "ALIQUOTA_IPI", "VLR_IMPOSTO_IPI", "BASE_CALCULO_ST_1", "BASE_CALCULO_ST_2", "BASE_CALCULO_ST_3", "ALIQUOTA_ST", "VLR_IMPOSTO_ST", "BASE_CALCULO_DIFAL", "ALIQUOTA_DIFAL", "VLR_IMPOSTO_DIFAL", "BASE_CALCULO_J6", "VLR_IMPOSTO_J6", "BASE_CALCULO_J7", "VLR_IMPOSTO_J7", "BASE_CALCULO_J8", "VLR_IMPOSTO_J8", "BASE_CALCULO_PIS_1", "BASE_CALCULO_PIS_2", "BASE_CALCULO_PIS_3", "ALIQUOTA_PIS", "VLR_IMPOSTO_PIS", "COD_SIT_TRIB_PIS", "BASE_CALCULO_COFINS_1", "BASE_CALCULO_COFINS_2", "BASE_CALCULO_COFINS_3", "ALIQUOTA_COFINS", "VLR_IMPOSTO_COFINS", "COD_SIT_TRIB_COF") AS 
  select distinct
              'E'                  TIPO_NF,
               a.COD_HOLDING,
               a.COD_MATRIZ,
               a.COD_FILIAL,
               a.ID_NF_ENTRADA     ID_NF,
               A.NUM_NF,
               A.SERIE,
               A.COD_MODELO,
               a.COD_CFOP_LEGAL,
               a.COD_CLIFOR,
               A.DT_EMISSAO,
               a.DT_LANCAMENTO,
               a.DT_ENTRADA,
               a.COD_STATUS,
               a.COD_UF,
               A.MUNICIPIO,
               A.RAZAOSOCIAL,
               A.CGC_CPF,
               A.VLR_TOTAL_PRODUTOS,
               B.VLR_BRUTO           TOTAL_ITEM,
               A.ICMS_BASE_TOTAL,
               A.ICMS_VALOR_TOTAL,
               A.ICMS_ST_BASE_TOTAL,
               A.ICMS_ST_VL_TOTAL    ICMS_ST_VALOR_TOTAL,
               A.VLR_FRETE,
               A.VLR_SEGURO,
               A.VLR_DESPESAS,
               A.IPI_TRIBUTADO,
               a.IPI_NAO_TRIBUTADO,
               a.DOCNUM,
               b.id_item,
               b.COD_PRODUTO,
               b.COD_UNID_MEDIDA,
               b.COD_CLASSIF_FISCAL,
               b.QUANTIDADE,
               b.VLR_UNITARIO,
               b.VLR_DESCONTO,
               b.DESCRICAO_NOTA,
               b.dig_cfop,
               b.cod_grp_produto, 
               b.cod_iva,
               C.COD_ORIGEM_PROD,
               B.CTA_CTB_MATERIAL,
               A.LANCTO_CONTABIL,
               A.CHAVE_NF_E,
               A.NUMERO_DI,
               c.COD_TRIBUT_ICMS,
               c.COD_SIT_TRIB_IPI,  
               -- DADOS DO IMPOSTO 01
               c.COD_IMPOSTO,
              (SELECT NVL(base_calculo,0)
               FROM   LF_NF_entrada_IMPOSTO
               WHERE  cod_holding   = b.cod_holding
               and    cod_matriz    = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    id_nf_entrada   = b.id_nf_entrada
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO     = '01'
               and    cod_tp_lanc_imp = '1'             
               AND    ROWNUM          = 1)  base_calculo_1,
               --
              (SELECT NVL(base_calculo,0)
               FROM   LF_NF_entrada_IMPOSTO
               WHERE  cod_holding   = b.cod_holding
               and    cod_matriz    = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    id_nf_entrada   = b.id_nf_entrada
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO     = '01'
               and    cod_tp_lanc_imp = '2'             
               AND    ROWNUM          = 1)  base_calculo_2,
               --
              (SELECT NVL(base_calculo,0)
               FROM   LF_NF_entrada_IMPOSTO
               WHERE  cod_holding   = b.cod_holding
               and    cod_matriz    = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    id_nf_entrada   = b.id_nf_entrada
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO     = '01'
               and    cod_tp_lanc_imp = '3'             
               AND    ROWNUM          = 1)  base_calculo_3,
               --   
            (SELECT nvl(vlr_imposto, 0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '01'
             and    cod_tp_lanc_imp = '1'
             AND    ROWNUM        = 1)  vlr_imposto_icms_1,
             --
             (SELECT nvl(vlr_imposto, 0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '01'
             and    cod_tp_lanc_imp = '2'
             AND    ROWNUM        = 1)  vlr_imposto_icms_2,
             --
             -- Recupera a Aliquota do imposto IPI
            (SELECT nvl(aliquota,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '01'
             and    cod_tp_lanc_imp = '1'
             AND    ROWNUM        = 1)  aliquota_ICMS_1,  
             --
             (SELECT nvl(aliquota,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '01'
             and    cod_tp_lanc_imp = '2'
             AND    ROWNUM        = 1)  aliquota_ICMS_2,
             --
             --Recuperar o Valor do CST IPI
            (SELECT cod_tribut_ipi
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding     = b.cod_holding
             and    cod_matriz      = b.cod_matriz
             and    cod_filial      = b.cod_filial
             and    id_nf_entrada   = b.id_nf_entrada
             AND    id_item         = b.id_item
             AND    COD_TP_LANC_IMP = '1'
             AND    COD_IMPOSTO     = '02'
             AND    ROWNUM          = 1)  cod_tribut_ipi,
             -- Recupera o Valor da Base de Calculo do imposto IPI
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '02'
             AND    COD_TP_LANC_IMP = '1'
             AND    ROWNUM        = 1)  base_calculo_ipi_1,
            -- Recupera o Valor da Base de Calculo do imposto IPI
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '02'
             AND    COD_TP_LANC_IMP = '2'
             AND    ROWNUM        = 1)  base_calculo_ipi_2,
            -- Recupera o Valor da Base de Calculo do imposto IPI
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '02'
             AND    COD_TP_LANC_IMP = '3'
             AND    ROWNUM        = 1)  base_calculo_ipi_3,             --
             -- Recupera a Aliquota do imposto IPI
            (SELECT nvl(aliquota,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '02'
             AND    ROWNUM        = 1)  aliquota_ipi,
             -- Recupera o Valor do imposto IPI
            (SELECT nvl(vlr_imposto, 0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '02'
             AND    ROWNUM        = 1)  vlr_imposto_ipi,
             --
             -- Recuperar Valores do Imposto 03
             --
             -- Recupera o Valor da Base de Calculo do imposto 03
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '03'
             AND    COD_TP_LANC_IMP = '1'
             AND    ROWNUM        = 1)  base_calculo_st_1,
              -- Recupera o Valor da Base de Calculo do imposto 03
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '03'
             AND    COD_TP_LANC_IMP = '2'
             AND    ROWNUM        = 1)  base_calculo_st_2, 
             --
             -- Recupera o Valor da Base de Calculo do imposto 03
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '03'
             AND    COD_TP_LANC_IMP = '3'
             AND    ROWNUM        = 1)  base_calculo_st_3,
             -- Recupera o Tipo de lancamento do imposto 03 - Substituicao Tributaria
            (SELECT nvl(aliquota,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '03'
             AND    ROWNUM        = 1)  aliquota_st,
             -- Recupera o Valor do imposto 03 - Substituicao Tributaria
            (SELECT nvl(vlr_imposto, 0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '03'
             AND    ROWNUM        = 1)  vlr_imposto_st,
             --
             -- Recuperar valores do Imposto 04
             --
             -- Recupera o Valor da Base de Calculo do imposto 04 - DIFAL
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '04'
             AND    ROWNUM        = 1)  base_calculo_difal,
             --
             -- Recupera a Aliquota do imposto 04 - DIFAL
            (SELECT nvl(aliquota,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '04'
             AND    ROWNUM        = 1)  aliquota_difal,
             -- Recupera o Valor do imposto 04 - DIFAL
            (SELECT nvl(vlr_imposto, 0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '04'
             AND    ROWNUM        = 1)  vlr_imposto_difal,
             --
             -- Recuperar valores do Imposto J6
             --
             -- Recupera o Valor da Base de Calculo do imposto J6 - DIFAL
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = 'J6'
             AND    ROWNUM        = 1)  base_calculo_J6,
             --
             -- Recupera o Valor do imposto J6
            (SELECT nvl(vlr_imposto, 0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = 'J6'
             AND    ROWNUM        = 1)  vlr_imposto_J6,
             --
             -- Recuperar valores do Imposto J7
             --
             -- Recupera o Valor da Base de Calculo do imposto J7
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = 'J7'
             AND    ROWNUM        = 1)  base_calculo_J7,
             --
             -- Recupera o Valor do imposto J7
            (SELECT nvl(vlr_imposto, 0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = 'J7'
             AND    ROWNUM        = 1)  vlr_imposto_J7,
             --
             -- Recuperar valores do Imposto J8
             --
             -- Recupera o Valor da Base de Calculo do imposto J8
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = 'J8'
             AND    ROWNUM        = 1)  base_calculo_J8,
             --
             -- Recupera o Valor do imposto J8
            (SELECT nvl(vlr_imposto, 0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = 'J8'
             AND    ROWNUM        = 1)  vlr_imposto_J8,
             --
             -- Recuperar Valores do Imposto 09 - PIS
             --
             -- Recupera o Valor da Base de Calculo do imposto 09
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '09'
             AND    COD_TP_LANC_IMP = '1'
             AND    ROWNUM        = 1)  base_calculo_pis_1,
             --
             -- Recupera o Valor da Base de Calculo do imposto 09
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '09'
             AND    COD_TP_LANC_IMP = '2'
             AND    ROWNUM        = 1)  base_calculo_pis_2,
             --
             -- Recupera o Valor da Base de Calculo do imposto 09
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '09'
             AND    COD_TP_LANC_IMP = '3'
             AND    ROWNUM        = 1)  base_calculo_pis_3,
             --
             -- Recupera a Aliquota do imposto 09 - PIS
            (SELECT nvl(aliquota,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '09'
             AND    ROWNUM        = 1)  aliquota_pis,
             -- Recupera o Valor do imposto 09 - PIS
            (SELECT nvl(vlr_imposto, 0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '09'
             AND    ROWNUM        = 1)  vlr_imposto_pis,
             -- Recupera o Codigo da situacao tributaria do imposto 09 - PIS
            (SELECT cod_sit_trib_PIS
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '09'
             AND    ROWNUM        = 1)  cod_sit_trib_pis,
             --
             -- Recuperar Valores do Imposto 10 - COFINS
             --
             -- Recupera o Valor da Base de Calculo do imposto 10
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '10'
             AND    COD_TP_LANC_IMP = '1'
             AND    ROWNUM        = 1)  base_calculo_cofins_1,
             -- Recupera o Valor da Base de Calculo do imposto 10
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '10'
             AND    COD_TP_LANC_IMP = '2'
             AND    ROWNUM        = 1)  base_calculo_cofins_2,
             --
             -- Recupera o Valor da Base de Calculo do imposto 10
            (SELECT NVL(base_calculo,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '10'
             AND    COD_TP_LANC_IMP = '3'
             AND    ROWNUM        = 1)  base_calculo_cofins_3,
             --
             -- Recupera a Aliquota do imposto 10 - COFINS
            (SELECT nvl(aliquota,0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '10'
             AND    ROWNUM        = 1)  aliquota_cofins,
             -- Recupera o Valor do imposto 10 - COFINS
            (SELECT nvl(vlr_imposto, 0)
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '10'
             AND    ROWNUM        = 1)  vlr_imposto_cofins,
             -- Recupera o Codigo da situacao tributaria do imposto 10 - COFINS
            (SELECT cod_sit_trib_cof
             FROM   LF_NF_entrada_IMPOSTO
             WHERE  cod_holding   = b.cod_holding
             and    cod_matriz    = b.cod_matriz
             and    cod_filial    = b.cod_filial
             and    id_nf_entrada = b.id_nf_entrada
             AND    id_item       = b.id_item
             AND    COD_IMPOSTO   = '10'
             AND    ROWNUM        = 1)  cod_sit_trib_cof
        from   lf_nf_entrada          a,
               lf_nf_entrada_item     b,
               lf_nf_entrada_imposto  c
        where  a.cod_holding   = 'JNJ BR'
        and    a.dt_entrada >= to_date('01/01/2013','dd/mm/yyyy')
        and    a.cod_status  = '01'
        and    b.cod_holding  = a.cod_holding
        and    b.cod_matriz   = a.cod_matriz
        and    b.cod_filial   = a.cod_filial
        and    b.id_nf_entrada = a.id_nf_entrada
        and    c.cod_holding   = b.cod_holding
        and    c.cod_matriz    = b.cod_matriz
        and    c.cod_filial    = b.cod_filial
        and    c.id_nf_entrada = b.id_nf_entrada
        and    c.id_item       = b.id_item
        and    c.cod_imposto   = '01'
       --
       UNION ALL
       --   
       select distinct 
              'S'                   TIPO_NF,
              a.COD_HOLDING,
              a.COD_MATRIZ,
              a.COD_FILIAL, 
              NULL                  ID_NF,
              a.NUM_NF,
              A.SERIE,
              A.COD_MODELO,
              a.COD_CFOP_LEGAL,
              a.COD_CLIFOR,
              a.DT_EMISSAO,
              NULL                  DT_LANCAMENTO,
              a.dt_emissao          DT_ENTRADA,
              A.COD_STATUS,
              A.COD_UF,
              A.MUNICIPIO,
              A.RAZAOSOCIAL,
              A.CGC_CPF,
              a.VLR_TOTAL_PRODUTOS,
              b.VLR_BRUTO           TOTAL_ITEM,
              a.ICMS_BASE_TOTAL,
              a.ICMS_VALOR_TOTAL,
              a.ICMS_ST_BASE_TOTAL,
              a.ICMS_ST_VALOR_TOTAL,
              a.VLR_FRETE,
              a.VLR_SEGURO,
              a.VLR_DESPESAS,
              a.IPI_TRIBUTADO,
              a.IPI_NAO_TRIBUTADO,
              A.DOCNUM,
              b.id_item,
              b.COD_PRODUTO,
              b.COD_UNID_MEDIDA,
              b.COD_CLASSIF_FISCAL,
              b.QUANTIDADE,
              b.VLR_UNITARIO,
              b.VLR_DESCONTO,
              b.DESCRICAO_NOTA,
              b.dig_cfop,
              b.cod_grp_produto,
              b.cod_iva,
              C.COD_ORIGEM_PROD,
              B.CTA_CTB_MATERIAL,
              A.LANCTO_CONTABIL,
              A.CHAVE_NF_E,
              NULL                NUMERO_DI,
              c.COD_TRIBUT_ICMS,
              c.COD_SIT_TRIB_IPI,  
              c.COD_IMPOSTO,
              --
              (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '01'
              and    cod_tp_lanc_imp = '1'
              AND    ROWNUM          = 1 )  base_calculo_1,
               --
              (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '01'
              and    cod_tp_lanc_imp = '2'             
              AND    ROWNUM          = 1)  base_calculo_2,
               --
              (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '01'
              and    cod_tp_lanc_imp = '3'             
              AND    ROWNUM          = 1)  base_calculo_3,
               --   
            (SELECT nvl(vlr_imposto, 0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO   = '01'
              and    cod_tp_lanc_imp = '1'
              AND    ROWNUM        = 1)  vlr_imposto_icms_1,
              --
              (SELECT nvl(vlr_imposto, 0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO   = '01'
              and    cod_tp_lanc_imp = '2'
              AND    ROWNUM        = 1)  vlr_imposto_icms_2,
             --
             -- Recupera a Aliquota do imposto IPI
            (SELECT nvl(aliquota,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '01'
              and    cod_tp_lanc_imp = '1'
              AND    ROWNUM          = 1)  aliquota_ICMS_1, 
              --
              (SELECT nvl(aliquota,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '01'
              and    cod_tp_lanc_imp = '2'
              AND    ROWNUM          = 1)  aliquota_ICMS_2,
              --
              --Recuperar o Valor do CST IPI
             (SELECT cod_tribut_ipi
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '02'
              and    cod_tp_lanc_imp = '1'
              AND    ROWNUM          = 1)  cod_tribut_ipi,
              --
              -- Recupera o Valor da Base de Calculo do imposto IPI
             (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '02'
              and    cod_tp_lanc_imp = '1'
              AND    ROWNUM        = 1)  base_calculo_ipi_1,
              --
              -- Recupera o Valor da Base de Calculo do imposto IPI
             (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '02'
              and    cod_tp_lanc_imp = '2'
              AND    ROWNUM        = 1)  base_calculo_ipi_2,
              --
              -- Recupera o Valor da Base de Calculo do imposto IPI
             (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '02'
              and    cod_tp_lanc_imp = '3'
              AND    ROWNUM        = 1)  base_calculo_ipi_3,
              -- Recupera o Tipo de lancamento do imposto IPI

              -- Recupera a Aliquota do imposto IPI
             (SELECT nvl(aliquota,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '02'
              AND    ROWNUM          = 1)  aliquota_ipi,
              -- Recupera o Valor do imposto IPI
             (SELECT nvl(vlr_imposto, 0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO   = '02'
              AND    ROWNUM        = 1)  vlr_imposto_ipi,
              --
              -- Recuperar Valores do Imposto 03
              --
              -- Recupera o Valor da Base de Calculo do imposto 03
             (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '03'
              and    cod_tp_lanc_imp = '1'
              AND    ROWNUM          = 1)  base_calculo_st_1,
              --
              -- Recupera o Valor da Base de Calculo do imposto 03
             (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '03'
              and    cod_tp_lanc_imp = '2'
              AND    ROWNUM          = 1)  base_calculo_st_2,
              --
              -- Recupera o Valor da Base de Calculo do imposto 03
             (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_municipio   = b.cod_municipio
              and    cod_cfop_legal  = b.cod_cfop_legal
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '03'
              and    cod_tp_lanc_imp = '3'
              AND    ROWNUM          = 1)  base_calculo_st_3,
              --
              -- Recupera o Tipo de lancamento do imposto 03 - Substituicao Tributaria
              -- Recupera a Aliquota do imposto Substituicao Tributaria
             (SELECT nvl(aliquota,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_cfop_legal  = b.cod_cfop_legal
              and    cod_municipio   = b.cod_municipio
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO   = '03'
              AND    ROWNUM        = 1)  aliquota_st,
              -- Recupera o Valor do imposto 03 - Substituicao Tributaria
             (SELECT nvl(vlr_imposto, 0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_cfop_legal  = b.cod_cfop_legal
              and    cod_municipio   = b.cod_municipio
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO   = '03'
              AND    ROWNUM        = 1)  vlr_imposto_st,
              --
              -- Recuperar valores do Imposto 04
              --
              -- Recupera o Valor da Base de Calculo do imposto 04 - DIFAL
             (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_cfop_legal  = a.cod_cfop_legal
              and    cod_municipio   = b.cod_municipio
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO   = '04'
              AND    ROWNUM        = 1)  base_calculo_difal,
              --
              -- Recupera a Aliquota do imposto 04 - DIFAL
             (SELECT nvl(aliquota,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_cfop_legal  = b.cod_cfop_legal
              and    cod_municipio   = b.cod_municipio
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO     = '04'
              AND    ROWNUM          = 1)  aliquota_difal,
              -- Recupera o Valor do imposto 04 - DIFAL
             (SELECT nvl(vlr_imposto, 0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_cfop_legal  = b.cod_cfop_legal
              and    cod_municipio   = b.cod_municipio
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO   = '04'
              AND    ROWNUM        = 1)  vlr_imposto_difal,
              --
              -- Recuperar valores do Imposto J6
              --
              -- Recupera o Valor da Base de Calculo do imposto J6 - DIFAL
             (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_cfop_legal  = b.cod_cfop_legal
              and    cod_municipio   = b.cod_municipio
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO   = 'J6'
              AND    ROWNUM        = 1)  base_calculo_J6,
              --
              -- Recupera o Valor do imposto J6
             (SELECT nvl(vlr_imposto, 0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_cfop_legal  = b.cod_cfop_legal
              and    cod_municipio   = b.cod_municipio
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO   = 'J6'
              AND    ROWNUM        = 1)  vlr_imposto_J6,
              --
              -- Recuperar valores do Imposto J7
              --
              -- Recupera o Valor da Base de Calculo do imposto J7
             (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_cfop_legal  = b.cod_cfop_legal
              and    cod_municipio   = b.cod_municipio
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO   = 'J7'
              AND    ROWNUM        = 1)  base_calculo_J7,
              --
              -- Recupera o Valor do imposto J7
             (SELECT nvl(vlr_imposto, 0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_cfop_legal  = b.cod_cfop_legal
              and    cod_municipio   = b.cod_municipio
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO   = 'J7'
              AND    ROWNUM        = 1)  vlr_imposto_J7,
              --
              -- Recuperar valores do Imposto J8
              --
              -- Recupera o Valor da Base de Calculo do imposto J8
             (SELECT NVL(base_calculo,0)
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_cfop_legal  = b.cod_cfop_legal
              and    cod_municipio   = b.cod_municipio
              AND    id_item         = b.id_item
              AND    COD_IMPOSTO   = 'J8'
              AND    ROWNUM        = 1)  base_calculo_J8,
              --
              -- Recupera o Valor do imposto J8
              (SELECT nvl(vlr_imposto, 0)
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO   = 'J8'
               AND    ROWNUM        = 1)  vlr_imposto_J8,
               --
               -- Recuperar Valores do Imposto 09 - PIS
               --
               -- Recupera o Valor da Base de Calculo do imposto 09
              (SELECT NVL(base_calculo,0)
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO   = '09'
               and    cod_tp_lanc_imp = '1'
               AND    ROWNUM        = 1)  base_calculo_pis_1,
               --
               -- Recupera o Valor da Base de Calculo do imposto 09
              (SELECT NVL(base_calculo,0)
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO     = '09'
               and    cod_tp_lanc_imp = '2'
               AND    ROWNUM        = 1)  base_calculo_pis_2,
               --
               -- Recupera o Valor da Base de Calculo do imposto 09
              (SELECT NVL(base_calculo,0)
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO     = '09'
               and    cod_tp_lanc_imp = '3'
               AND    ROWNUM        = 1)  base_calculo_pis_3,
               --
               -- Recupera o Tipo de lancamento do imposto 09 - PIS
                -- Recupera a Aliquota do imposto 09 - PIS
              (SELECT nvl(aliquota,0)
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO   = '09'
               AND    ROWNUM        = 1)  aliquota_pis,
               -- Recupera o Valor do imposto 09 - PIS
              (SELECT nvl(vlr_imposto, 0)
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO   = '09'
               AND    ROWNUM        = 1)  vlr_imposto_pis,
               -- Recupera o Codigo da situacao tributaria do imposto 09 - PIS
              (SELECT cod_sit_trib_PIS
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO   = '09'
               AND    ROWNUM        = 1)  cod_sit_trib_pis,
               --
               -- Recuperar Valores do Imposto 10 - COFINS
               --
               -- Recupera o Valor da Base de Calculo do imposto 10
              (SELECT NVL(base_calculo,0)
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO   = '10'
               and    cod_tp_lanc_imp = '1'
               AND    ROWNUM        = 1)  base_calculo_cofins_1,
               --
               --
               -- Recupera o Valor da Base de Calculo do imposto 10
              (SELECT NVL(base_calculo,0)
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO     = '10'
               and    cod_tp_lanc_imp = '2'
               AND    ROWNUM        = 1)  base_calculo_cofins_2,
               --
               --
               -- Recupera o Valor da Base de Calculo do imposto 10
              (SELECT NVL(base_calculo,0)
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO     = '10'
               and    cod_tp_lanc_imp = '3'
               AND    ROWNUM        = 1)  base_calculo_cofins_3,
               -- Recupera a Aliquota do imposto 10 - COFINS
              (SELECT nvl(aliquota,0)
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO   = '10'
               AND    ROWNUM        = 1)  aliquota_cofins,
               -- Recupera o Valor do imposto 10 - COFINS
              (SELECT nvl(vlr_imposto, 0)
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO   = '10'
               AND    ROWNUM        = 1)  vlr_imposto_cofins,
               -- Recupera o Codigo da situacao tributaria do imposto 10 - COFINS
              (SELECT cod_sit_trib_cof
               FROM   lf_nf_saida_imposto
               WHERE  cod_holding     = b.cod_holding
               and    cod_matriz      = b.cod_matriz
               and    cod_filial      = b.cod_filial
               and    num_nf          = b.num_nf
               and    serie           = b.serie
               and    subserie        = b.subserie
               and    dt_emissao      = b.dt_emissao
               and    cod_cfop_legal  = b.cod_cfop_legal
               and    cod_municipio   = b.cod_municipio
               AND    id_item         = b.id_item
               AND    COD_IMPOSTO   = '10'
               AND    ROWNUM        = 1)  cod_sit_trib_cof
       from   lf_nf_saida         a,
              lf_nf_saida_item    b,
              lf_nf_saida_imposto c
       where  a.cod_holding   = 'JNJ BR'
       and    a.dt_emissao    >= to_date('01/01/2013','dd/mm/yyyy')
       and    a.cod_status     = '01'
       and    b.cod_holding    = a.cod_holding
       AND    b.cod_matriz     = a.cod_matriz
       AND    b.cod_filial     = a.cod_filial
       AND    b.num_nf         = a.num_nf
       AND    b.serie          = a.serie
       AND    b.subserie       = a.subserie
       AND    b.dt_emissao     = a.dt_emissao
       AND    b.cod_cfop_legal = a.cod_cfop_legal
       AND    b.cod_municipio  = a.cod_municipio
       AND    c.cod_holding    = b.cod_holding
       AND    c.cod_matriz     = b.cod_matriz
       AND    c.cod_filial     = b.cod_filial
       AND    c.num_nf         = b.num_nf
       AND    c.serie          = b.serie
       AND    c.subserie       = b.subserie
       AND    c.dt_emissao     = b.dt_emissao
       AND    c.cod_cfop_legal = b.cod_cfop_legal
       AND    c.cod_municipio  = b.cod_municipio
       AND    c.id_item        = b.id_item
       and    c.cod_imposto    ='01';

Compartilhar este post


Link para o post
Compartilhar em outros sites

As n entradas de LF_NF_entrada_IMPOSTO , poderiam ser uma e os valores

tratados por max e case por exemplo.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

fazendo um join e não N subselect , algo como


 

              ..

             MAX(CASE WHEN COD_IMPOSTO   = 'J6' THEN nvl(vlr_imposto, 0) ELSE NULL)) vlr_imposto_J6,
              MAX(CASE WHEN COD_IMPOSTO   = 'J7' THEN nvl(vlr_imposto, 0) ELSE NULL)) vlr_imposto_J7,
              ...
              FROM   lf_nf_saida_imposto
              WHERE  cod_holding     = b.cod_holding
              and    cod_matriz      = b.cod_matriz
              and    cod_filial      = b.cod_filial
              and    num_nf          = b.num_nf
              and    serie           = b.serie
              and    subserie        = b.subserie
              and    dt_emissao      = b.dt_emissao
              and    cod_cfop_legal  = b.cod_cfop_legal
              and    cod_municipio   = b.cod_municipio
              AND    id_item         = b.id_item

             group by ...

mas veja , não analisei sua sql , nem dá face ao tananho , apenas a principio me parece que os muitos subs poderiam ser eliminados

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por FabianoSouza
      Tenho uma function que precisa receber 02 argumentos.
      Ela funciona se eu aplicar num select qualquer. Mas se eu aplicar num select dinâmico, ocorre erro.
      Veja trecho do meu select.
      ... SET @sql = @sql +', dbo.retornaIco_ItemBloq((SELECT COUNT(*) FROM dbo.tab AS TT2 WHERE TT2.codCategTreina = CTT.id),'+@title+') AS ''resp''' ... No caso, o primeiro argumento da function dbo.retornaIco_ItemBloq é um SELECT COUNT.
      O segundo argumento é uma variável (que está devidamente declarada e definida).
       
      O erro ocorre porque ao executar (chamando EXEC(@sql) ), o SQL entende que o segundo argumento é uma coluna da consulta principal, pois existe uma vírgula antes da variável @title (que é o segundo argumento da function).
      Repito. Se eu aplicar essa function num select normal, funciona normalmente. Porém, preciso que funcione num SQL dinâmico porque é esse é o padrão que estou adotando para o sistema todo.
       
      A function dbo.retornaIco_ItemBloq faz o seguinte:
      1) Recebe o valor do COUNT e da variável @title
      2) Se o COUNT for maior que  Zero, cria uma tag HTML (uma SPAN), define sua title com o valor da variável @title e passa para uma variável
      3) Retorna o HTML que será exibido no resultado da consulta principal
      É super simples.
       
      Há outra forma de chamar a function?
    • Por mamotinho
      Olá, estou a um tempo tentando acrescentar um codigo na coluna do SQL na qual seria VARBINARY

      A Coluna atual contém o seguinte codigo binary:
      Código (01)
      0x020009004C0101434D0101465C0101485D0101499801014B8401014E8501014F86010150D00009017A0014247D0014257B0014261600090201000903F9001420FA0014229F000923F8001427DF000128730014297600142A7E00142BFB00142CA3010147E000142DE100142EA40101443900120424001405C40101457400142F770014307F0001317C001232E6000421780001332C010A522F0108533A010354380103553001085637010357A5010166A6010167  
      No codigo acima eu gostaria de acrescentar o seguinte codigo:
      Código (02)
      0xCC010120CD010121CE010122CF010123
      no caso eu quero criar uma procedure que ao executar a função ele adicione o codigo 02 no código 01. no caso o codigo ficaria desta forma:

      0x020009004C0101434D0101465C0101485D0101499801014B8401014E8501014F86010150D00009017A0014247D0014257B0014261600090201000903F9001420FA0014229F000923F8001427DF000128730014297600142A7E00142BFB00142CA3010147E000142DE100142EA40101443900120424001405C40101457400142F770014307F0001317C001232E6000421780001332C010A522F0108533A010354380103553001085637010357A5010166A6010167CC010120CD010121CE010122CF010123



      Ficarei imensamente grato se alguém conseguir me ajudar, o orientar. sou iniciante nessa areá ainda.
    • Por Elisame Araújo
      Seguinte,
      Eu tenho uma página de atualização de lista de faixas que estão agrupados por álbum, com os dados vindo através de parâmetros na url como o albumID e detalhes e são retornados dentro de um while.
      O que eu queria é que ele atualizasse todos os campos que fossem editados se eles fossem modificados, mas o que o ocorre é que apenas o último registro é atualizado.
       
      O script que traz as faixas:
       
      <tr> <form class="form-group" method="post" action="includes/funcoes/atualizar-faixas.php"> <?php while($sqlSelect = mysqli_fetch_assoc($result)) { ?> <td><input type="text" value="<?php echo $sqlSelect['trackNumero'] ?>" class="form-control" name="trackNumero"></td> <td><input type="text" value="<?php echo $sqlSelect['trackTitulo'] ?>" class="form-control" name="trackTitulo"></td> <td><input type="text" value="<?php echo $sqlSelect['trackTraducao'] ?>" class="form-control" name="trackTraducao"></td> <td><input type="text" value="<?php echo $sqlSelect['trackID'] ?>" class="form-control" name="trackID" readonly></td> <td><input type="text" value="<?php echo $sqlSelect['albumID'] ?>" class="form-control" name="albumID" readonly></td> </tr> <?php } ?> <tr><a href="albuns-lista.php"><button name="cancelar" id="cancelar" class="btn btn-danger mb-3 mr-1" type="button"> <i class="fa-solid fa-arrow-left"></i> Voltar</button></a></tr> <tr><button name="update" id="update" class="btn btn-success mb-3" type="submit" value=""><i class="fa-solid fa-arrow-up-from-bracket"></i> Atualizar</button></tr> </form>  
       
      E esse é o resultado do código acima:

       
      E este é o código que uso pra fazer o UPDATE no banco de dados:
      <?php require_once "../db/albuns.php"; if(isset($_POST['update'])){ $trackNumero = $_POST['trackNumero']; $trackTitulo = mysqli_real_escape_string($conecta2, $_POST['trackTitulo']); $trackTraducao = $_POST['trackTraducao']; $trackID = $_POST['trackID']; $albumID = $_POST['albumID']; $sqlUpdate = "UPDATE `faixas` SET `trackTitulo` = '$trackTitulo', `trackNumero` = '$trackNumero', `trackTraducao` = '$trackTraducao' WHERE `albumID` = $albumID AND `trackID` = $trackID"; if($atualizaDados = mysqli_query($conecta2, $sqlUpdate) == true){ var_dump($sqlUpdate); //header("location: ../../albuns.php?update=sucesso"); } else { //header("location: ../../albuns.php?update=erro"); } } ?> Como eu faria para que cada linha fosse atualizada individualmente? Já tentei diversos métodos, mas o resultado continua sendo a atualização apenas do último registro no banco, ignorando o restante das atualizações.
    • Por mr22robot
      Ola caros amigos. 
      Estou com uma dúvida aqui que embora nao tenho achado ainda uma resposta, acredito que haja.
      Estou estudando a tão sonhada linguagem de programação asp.net core mvc. Linguagem essa que demorei 5 anos pra iniciar os estudos rsrs.
      Mas estou agarrado em uma situação. 
      Estou usando como base de dados nos meus estudos um banco Oracle. Que já tem algumas informações nele. Utilizei o SCAFFOLD para criar as classes e o contexto baseado no banco e tabelas existentes. 
      Porem agora na fase das consultas, estou perdido em como utilizar o IN que eu utilizo no oracle; no LINQ.
      Ex: 
      SELECT CODPROD,DESCRICAO FROM PRODUTO WHERE CODPROD IN(1,2,3,4,5,6) Como eu utilizo esse filtro com uma restrição de códigos de produtos? no caso o where codprod in(1,2,3,4,5,6) ?.
      Desde já obrigado pela ajuda.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.