Pular para o conteúdo
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #107257
    Avatar de Guilherme Vieira de StefaniGuilherme Vieira de Stefani
    Participante

      Bom dia a todos,

      Estou quebrando a cabeça a 2 dias em cima de um problema que era para ser fácil mas não está sendo. Tenho que listar, todos os documentos relativos a venda na empresa que trabalho. São originários de notas fiscais sendo que alguns tem comissão e outros não. Até ai tudo bem, o fato é que os que não estou conseguindo trazer somente os que não tem comissão.

      O meu problema está na relação entre as tabelas:

      M3_DOCTO >> Documento em si.

      M3_PARTEDOCTO >> Tabela intermediária que define quais informações o documento tem como Contabilização, Comissão, Escrita Fiscal. No caso desta tabela, quando a coluna IDF_PARTEDOCTO for igual a 1085, quer dizer que este documento tem comissão.

      M3_DOCTOCOM >> Tabela que guarda os valores de comissão do documento.

      O que eu quero é listar somente os documentos que não existam na tabela M3_DOCTOCOM. Alguem pode dar uma dica? Uso Oracle 11g.

      Deste já agradeço a atenção!

      Comando completo abaixo!

      select distinct(A.DATAVCTOSAL) as Data_Vencto,
      A.DATAEMI as DataEmi,
      J.DOCTODIGITADO ||’-‘|| A.IDENTPARCELA||’-‘||ZZ.QDADEPARC as PARCELA,
      A.VALSAL as VlrSaldo,
      A.NOSNUM as Nosso_Numero,
      HH.IDENTIFICACAO as CPF_CNPJ,
      J.DOCTODIGITADO AS NF,
      — ( Select BB.CODIGO as ID_Repre
      — from m3_doctontfiv AA
      — inner join m3_repre BB on BB.id = AA.idf_representante
      — where AA.ida = J.id) as Codigo_Repre,
      — TRUNC((A.VALSAL * (JJ.PERCCOMIS)/100),2) AS Comissao,
      (CASE WHEN A.HISTORICO = ‘2 – BOLETO’ THEN 2 ELSE 1 END) AS PORTADOR,
      (CASE WHEN A.HISTORICO = ‘2 – BOLETO’ THEN 2 ELSE 1 END) AS TIPO_COBRANCA,
      K.CODIGO as COD_Filial –Filtrar Filial
      from M3_PARCRE A
      INNER JOIN M3_TIPCOB B ON B.ID = A.IDF_TIPCOB
      INNER JOIN M3_MOVFIN H ON H.ID = A.IDA
      INNER JOIN M3_INTEGRA I ON I.ID = H.IDF_INTEGRA
      INNER JOIN M3_DOCTO J ON J.ID = I.IDF_DOCTO
      INNER JOIN M3_FILIAL K ON K.ID = J.IDF_FILIAL
      INNER JOIN M3_TIPDOC L ON L.ID = J.IDF_TPDOCTO
      INNER JOIN M3_EMPRESA Q ON Q.ID = K.IDF_EMPRESA
      INNER JOIN MTMG_IDENT M ON M.ID = J.IDF_IDENT
      LEFT OUTER JOIN M3_BANCO C ON C.ID = A.IDF_BANCO
      LEFT OUTER JOIN MTMG_PAPELREL D ON D.ID = C.IDA
      LEFT OUTER JOIN MTMG_IDENT E ON E.ID = D.IDF_IDENT
      LEFT OUTER JOIN M3_CLIECRE F ON F.IDA = A.ID
      LEFT OUTER JOIN M3_CLIENTE G ON G.ID = F.IDF_CLIENTE
      INNER JOIN MTMG_PAPELREL GG ON GG.ID = G.IDA
      INNER JOIN MTMG_IDENT HH ON HH.ID = GG.IDF_IDENT
      LEFT JOIN M3_PARTEDOCTO LL ON LL.IDF_DOCTO = J.ID
      RIGHT JOIN M3_DOCTOCOM JJ ON JJ.IDA = LL.ID
      INNER JOIN M3_PARTEDOCTO YY ON YY.IDF_DOCTO = J.ID
      INNER JOIN M3_CABPADOCTO WW ON WW.IDA = YY.ID
      INNER JOIN M3_CONDPARCEL ZZ ON ZZ.ID = WW.IDF_CONDPARCEL
      LEFT OUTER JOIN M3_OcoCRE BB ON BB.IDF_ParCRE = A.ID
      where (( A.DATAVCTOSAL >= TO_DATE(’01/01/1900′,’MM/DD/YYYY’))
      and (A.DATAVCTOSAL <= TO_DATE('12/31/2999','MM/DD/YYYY')) and (a.situacao not in ('3','2','4'))) --4 = Renegociado / 3 = Cancelado / 2 = Baixado and (BB.Momento <= TO_DATE('18/12/2014','DD/MM/YYYY')) and K.CODIGO = '80'

      #107260
      Avatar de rmanrman
      Participante

        @Guilherme Vieira de Stefani

        A grande sacada é utilizar as cláusulas NOT EXISTS:


        select distinct(A.DATAVCTOSAL) as Data_Vencto,
        A.DATAEMI as DataEmi,
        J.DOCTODIGITADO ||'-'|| A.IDENTPARCELA||'-'||ZZ.QDADEPARC as PARCELA,
        A.VALSAL as VlrSaldo,
        A.NOSNUM as Nosso_Numero,
        HH.IDENTIFICACAO as CPF_CNPJ,
        J.DOCTODIGITADO AS NF,
        -- ( Select BB.CODIGO as ID_Repre
        -- from m3_doctontfiv AA
        -- inner join m3_repre BB on BB.id = AA.idf_representante
        -- where AA.ida = J.id) as Codigo_Repre,
        -- TRUNC((A.VALSAL * (JJ.PERCCOMIS)/100),2) AS Comissao,
        (CASE WHEN A.HISTORICO = '2 - BOLETO' THEN 2 ELSE 1 END) AS PORTADOR,
        (CASE WHEN A.HISTORICO = '2 - BOLETO' THEN 2 ELSE 1 END) AS TIPO_COBRANCA,
        K.CODIGO as COD_Filial --Filtrar Filial
        from M3_PARCRE A
        INNER JOIN M3_TIPCOB B ON B.ID = A.IDF_TIPCOB
        INNER JOIN M3_MOVFIN H ON H.ID = A.IDA
        INNER JOIN M3_INTEGRA I ON I.ID = H.IDF_INTEGRA
        INNER JOIN M3_DOCTO J ON J.ID = I.IDF_DOCTO
        INNER JOIN M3_FILIAL K ON K.ID = J.IDF_FILIAL
        INNER JOIN M3_TIPDOC L ON L.ID = J.IDF_TPDOCTO
        INNER JOIN M3_EMPRESA Q ON Q.ID = K.IDF_EMPRESA
        INNER JOIN MTMG_IDENT M ON M.ID = J.IDF_IDENT
        LEFT OUTER JOIN M3_BANCO C ON C.ID = A.IDF_BANCO
        LEFT OUTER JOIN MTMG_PAPELREL D ON D.ID = C.IDA
        LEFT OUTER JOIN MTMG_IDENT E ON E.ID = D.IDF_IDENT
        LEFT OUTER JOIN M3_CLIECRE F ON F.IDA = A.ID
        LEFT OUTER JOIN M3_CLIENTE G ON G.ID = F.IDF_CLIENTE
        INNER JOIN MTMG_PAPELREL GG ON GG.ID = G.IDA
        INNER JOIN MTMG_IDENT HH ON HH.ID = GG.IDF_IDENT
        LEFT JOIN M3_PARTEDOCTO LL ON LL.IDF_DOCTO = J.ID
        INNER JOIN M3_PARTEDOCTO YY ON YY.IDF_DOCTO = J.ID
        INNER JOIN M3_CABPADOCTO WW ON WW.IDA = YY.ID
        INNER JOIN M3_CONDPARCEL ZZ ON ZZ.ID = WW.IDF_CONDPARCEL
        LEFT OUTER JOIN M3_OcoCRE BB ON BB.IDF_ParCRE = A.ID
        where NOT EXISTS(
        SELECT 1
        FROM M3_DOCTOCOM JJ
        WHERE JJ.IDA = LL.ID
        )
        AND (( A.DATAVCTOSAL >= TO_DATE('01/01/1900','MM/DD/YYYY'))
        and (A.DATAVCTOSAL <= TO_DATE('12/31/2999','MM/DD/YYYY'))
        and (a.situacao not in ('3','2','4'))) --4 = Renegociado / 3 = Cancelado / 2 = Baixado
        and (BB.Momento <= TO_DATE('18/12/2014','DD/MM/YYYY'))
        and K.CODIGO = '80'

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