Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #106905
    Avatar de RamoneRamone
    Participante

      Boa tarde galera,
      estou fazendo um select para trazer a maior nota do estab 4 e cada estab tem 3 series ou seja para teria que retornar 3 linhas isso eu consegui…o problema eh que preciso adicionar a data de emissao dessas notas e quando adiciono no select e no group ele retorna muitas linhas como se ele trouxesse o max da nota por dia.
      Eu só preciso adicionar a data de emissao ao select para retornar as 3 linhas com as datas dela.
      Alguem pode me ajudar segue o Script e a coluna que quero adicionar comentada:

      SELECT NFE.ID_EMPRESA,
      EMP.NM_FANTASIA,
      NFE.NR_SERIE,
      SUBSTR(NFE.NR_CNPJ,9,4)NR_CNPJ,
      MAX(NFE.NR_DOCUMENTO_FISCAL) NR_DOCUMENTO_FISCAL
      — NFE.DT_EMISSAO

      FROM NFE_NF NFE,
      CTRL_EMPRESA EMP

      WHERE NFE.ID_EMPRESA = EMP.ID_EMPRESA
      and SUBSTR(NFE.NR_CNPJ,9,4)= ‘0004’


      GROUP BY NFE.ID_EMPRESA,
      EMP.NM_FANTASIA,
      NFE.NR_SERIE,
      SUBSTR(NFE.NR_CNPJ,9,4)
      — NFE.DT_EMISSAO

      #106906
      Avatar de Raphael FernandesRaphael Fernandes
      Participante

        Caro Ramone.

        Se ao agrupar por NFE.DT_EMISSAO, está trazendo mais linhas que o esperado, significa que existem diferentes datas relacionadas aquela projeção. O que vc pode fazer é usar uma função de agrupamento (MAX ou MIN por exemplo) e não agrupar (GROUP BY) pela data, porém isso poderia trazer uma informação de data que não corresponde ao número da nota.

        Uma forma fácil para não quebrar essa relação do maior número da nota com a dt_emissao correspondente é usando uma subquery. Tenta algo assim:

        SELECT NFE_SUB.ID_EMPRESA,
        EMP.NM_FANTASIA,
        NFE_SUB.NR_SERIE,
        NFE_SUB.NR_CNPJ,
        NFE_SUB.NR_DOCUMENTO_FISCAL,

        NFE_SUB.DT_EMISSAO

        FROM CTRL_EMPRESA EMP
        (SELECT NFE.ID_EMPRESA,
        NFE.NR_SERIE,
        SUBSTR(NFE.NR_CNPJ,9,4) as NR_CNPJ,
        MAX(NFE.NR_DOCUMENTO_FISCAL) as NR_DOCUMENTO_FISCAL,
        NFE.DT_EMISSAO

        FROM NFE_NF NFE

        WHERE SUBSTR(NFE.NR_CNPJ,9,4)= ‘0004’

        GROUP BY NFE.ID_EMPRESA,
        NFE.NR_SERIE,
        SUBSTR(NFE.NR_CNPJ,9,4),

        NFE.DT_EMISSAO) NFE_SUB

        WHERE EMP.ID_EMPRESA = NFE_SUB.ID_EMPRESA;

        #106907
        Avatar de rmanrman
        Participante

          @Ramone

          Creio que seja assim:


          SELECT NFE.ID_EMPRESA
          ,EMP.NM_FANTASIA
          ,NFE.NR_SERIE
          ,SUBSTR(NFE.NR_CNPJ,9,4) NR_CNPJ
          ,NFE.NR_DOCUMENTO_FISCAL
          ,NFE.DT_EMISSAO
          FROM NFE_NF NFE
          ,CTRL_EMPRESA EMP
          WHERE NFE.ID_EMPRESA = EMP.ID_EMPRESA
          AND (NFE.ID_EMPRESA, NFE.NR_SERIE, SUBSTR(NFE.NR_CNPJ,9,4), NFE.NR_DOCUMENTO_FISCAL) IN (
          SELECT ID_EMPRESA
          ,NR_SERIE
          ,SUBSTR(NR_CNPJ,9,4) NR_CNPJ
          ,MAX(NR_DOCUMENTO_FISCAL) NR_DOCUMENTO_FISCAL
          FROM NFE_NF
          WHERE SUBSTR(NR_CNPJ,9,4) = '0004'
          GROUP BY ID_EMPRESA,NR_SERIE,SUBSTR(NR_CNPJ,9,4))

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress