Ir para conteúdo

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por rogfranz
      Olá pessoal! Então, estou desenvolvendo um projeto que pode tomar grandes proporções, e estou com uma dúvida que está me tirando o sono!

      Digamos que trata-se de um sistema de pedidos só pra usar como exemplo.

      Vários usuários vão poder se cadastrar no sistema e criar seus pedidos.

      Teremos então as tabelas

      usuarios
      pedidos
      pedido_itens
       
       
      minha dúvida está na seguinte questão.
      Uso bancos de dados separados para cada cliente ?  
      ou
      Uma tabela por exemplo dos pedidos vinculo o id do usuário para todos usuários do sistema ?

      POR FAVOR! Me Deem a opinião do que vocês fariam! e Por que!

      Trazendo para a realidade do meu projeto uma estimativa de volume de dados que eu imagino.
      Levando em conta que um usuário pode cadastrar a média de 10 "pedidos" no mês com aproximadamente 500 ítens

      Agradeço muito a contribuição de vocês!
    • Por LuanMartinsTI
      Tenho o seguinte problema, eu preciso dar um select em duas tabelas, ou ter dois selects tanto faz, eu fiz com inner join e com union all mas nao consigo ter o resultado que eu desejo
      O problema é o seguinte> Pra saber quantos usuarios eu tenho em cada grupo eu preciso dar um select na membros grupo com o id do grupo, mas eu preciso mostrar apenas os 5 primeiros grupos com mais gente, eu nao tenho na tabela falando grupo 1 tem 50 membros, eu tenho 50 linhas com grupo 1 e id do usuario, como eu transformo isso no que eu quero? a unica forma q eu pensei é criar um campo novo em grupos e colocar la o resultado de rowCount, mas gostaria de saber se é possivel fazer sem, eu ja consigo mostrar quantos usuarios cada grupo tem, eu nao consigo mostrar é em ordem e nao é so dar o asc o problema é na logica provavelmente, mas se for possivel resolver isso com uma unica query ficarei grato
      tabela 1
      grupos( id nome dono created stat ) tabela 2
      membros_grupo( id grupo_id user_id )  
      PHP
      public function ultimosGrupos($limite){ try { $query = "SELECT * FROM groups ORDER BY id ASC LIMIT :limite"; $this->Select = $this->Conn->prepare($query); $this->Select->bindParam(':limite' , $limite, PDO::PARAM_INT); $this->Select->execute(); if($this->Select->rowCount() > 0){ return $this->Select->fetchAll(PDO::FETCH_ASSOC); }else{ return FALSE; } } catch (PDOException $exc) { exibeMensagens("Erro ao consultar. {$exc->getMessage()}", WS_ERROR); } } public function users_por_grupo($id){ try { $query = "SELECT * FROM group_memberships WHERE group_id = :id"; $this->Select = $this->Conn->prepare($query); $this->Select->bindParam(':id' , $id, PDO::PARAM_INT); $this->Select->execute(); return $this->Select->rowCount(); } catch (PDOException $exc) { exibeMensagens("Erro ao consultar. {$exc->getMessage()}", WS_ERROR); } }  
    • Por Fabricio Guilherme
      Olá pessoal, esse é meu primeiro post, gostaria de uma ajuda de alguém que tenha contato com Woocommerce/ Wordpress.
      Eu recebi uma solicitação de um cliente para conectar um web service a loja dele, com o objetivo de verificar vagas existentes em pousadas, depois de agrupar os dados do pedido, enviar um formulário para os colaboradores dele e assim, efetuar a venda.
      A principio a loja funciona no modo orçamento apenas e por enquanto vai permanecer assim, minha solução foi criar um plugin para o Woocommerce que faz todo esse trabalho de forma externa, usando os ganchos do wordpress.
      A minha questão é se o cliente for colocar a loja no modo venda, como vou tratar a quantidade de variações?
      O Woocommerce é preparado pra isso ou seria melhor outro gerenciador de loja?
      OBS: Pra ficar mais fácil de entender a cliente é uma agência de viagens, como a decolar por exemplo. E portanto se conecta a outros bancos com uma infinidade de variáveis, restrições e métodos diferentes em cada atividade diferentes.
      OBS: Estou disposto a novas plataformas que suportem essa complexibilidade de dados, se houver algo PHP + MySQL é muito bem vindo kkkk
    • Por Fabiana Gomes
      Pessoal, boa noite
       
      Preciso de um help!!
       
      Tenho a tabela ENDERECO e na coluna LOUGRADOURO (40) preciso diminuir alguns endereços para 30 caracteres.
      Basicamente preciso cortar a partir da casa 30.
       
      Alguem pode me ajudar?
    • Por Lucast
      Boa tarde galera,
       
      Estou tentando fazer a soma de duas colunas no SQL e queria que ela me retornasse o valor separado em uma coluna a parte, podem me ajudar?
       
      Isso é o que estou fazendo
       
      SELECT MONTH(workOrderDate) AS MES, (SUM(CASE WHEN WorkType = '02' AND workOrderDescription = 'preventiva' THEN 1.0 ELSE 0 END)) AS preventiva, (SUM(CASE WHEN workOrderDescription = 'CORRETIVA' THEN 1 ELSE 0 END)) AS corretivas FROM WorkOrder WHERE YEAR(workOrderDate) = 2018 AND lastUpdateData IS NOT NULL GROUP BY MONTH(workOrderDate);  
      Esse resultado me retorna esses valores:
       
      https://imgur.com/5XqbmFX
       
      Preciso que ele me retorne uma coluna ao lado informando a soma de ambas as colunas.
       
      Alguém consegue me ajudar?
       
       
×

Informação importante

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