Pular para o conteúdo
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #106726
    Avatar de diegodcrdiegodcr
    Participante

      Boa tarde pessoal!!
      Tenho uma tabela que contém codprod,pvenda e codfilial entretanto as informações aparecem 3 vezes por conta da quantidade de filial que são 3.
      Preciso pegar somente as linhas que contém pvenda diferente com sua respectiva filial e não igual conforme resultado abaixo:

      pvenda codprod codfilial
      1,19 1 1
      1,19 1 2

      Tentei vários SQL e estou enviando o menos errado:

      select distinct pvenda,codprod,codfilial
      from tabela
      where codfilial not in (3)
      order by 2,5

      #106727
      Avatar de rmanrman
      Participante

        @diegodcr

        Você quer mostrar os dados da outras filiais dado uma filial?


        select pvenda,codprod,codfilial
        from tabela
        minus
        select pvenda,codprod,codfilial
        from tabela
        where codfilial = 3

        #106728
        Avatar de diegodcrdiegodcr
        Participante

          [quote=”rman” post=32135]@diegodcr

          Você quer mostrar os dados da outras filiais dado uma filial?


          select pvenda,codprod,codfilial
          from tabela
          minus
          select pvenda,codprod,codfilial
          from tabela
          where codfilial = 3
          [/quote]

          Quero que o SQL retorne somente as linhas que tem preços diferentes.
          EX: filial 1 tem codprod 1 com preço 1 e filial 2 tem codprod 1 com preço 2

          #106729
          Avatar de rmanrman
          Participante

            @diegodcr

            Agora entendi. Caso um produto tenta preço diferente em qualquer filial a consulta abaixo vai trazer.


            select pvenda,codprod,codfilial
            from tabela
            minus
            select t1.pvenda,t1.codprod,t1.codfilial
            from tabela t1
            left join tabela t2 on t2.pvenda = t1.pvenda and t2.pcodprod = t1.pcodprod and t1.codfilial t2.codfilial

            #106730
            Avatar de diegodcrdiegodcr
            Participante

              [quote=”rman” post=32137]@diegodcr

              Agora entendi. Caso um produto tenta preço diferente em qualquer filial a consulta abaixo vai trazer.


              select pvenda,codprod,codfilial
              from tabela
              minus
              select t1.pvenda,t1.codprod,t1.codfilial
              from tabela t1
              left join tabela t2 on t2.pvenda = t1.pvenda and t2.pcodprod = t1.pcodprod and t1.codfilial t2.codfilial
              [/quote]

              O seu SQL não resultou em nada, e tem preço diferente pro mesmo produto entre as filiais…

              #106731
              Avatar de rmanrman
              Participante

                @diegodcr

                Montei um teste aqui. Verifica se é isso.


                CREATE TABLE TABELA (
                CODFILIAL NUMBER
                ,CODPROD NUMBER
                ,PVENDA NUMBER(10,2)
                );

                INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,1,10.50);
                INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,1,5.50);
                INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,1,5.50);

                INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,2,3);
                INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,2,3);
                INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,2,3);

                INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,3,10);
                INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,3,20);
                INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,3,30);

                INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,4,10);

                INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,5,20);

                INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,6,30);

                COMMIT;

                SELECT *
                FROM TABELA
                WHERE CODPROD IN(
                SELECT CODPROD
                FROM TABELA
                GROUP BY CODPROD,PVENDA
                HAVING COUNT(*) < (SELECT COUNT(DISTINCT CODFILIAL) FROM TABELA)
                );

                #106732
                Avatar de diegodcrdiegodcr
                Participante

                  [quote=”rman” post=32139]@diegodcr

                  Montei um teste aqui. Verifica se é isso.


                  CREATE TABLE TABELA (
                  CODFILIAL NUMBER
                  ,CODPROD NUMBER
                  ,PVENDA NUMBER(10,2)
                  );

                  INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,1,10.50);
                  INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,1,5.50);
                  INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,1,5.50);

                  INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,2,3);
                  INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,2,3);
                  INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,2,3);

                  INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,3,10);
                  INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,3,20);
                  INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,3,30);

                  INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,4,10);

                  INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,5,20);

                  INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,6,30);

                  COMMIT;

                  SELECT *
                  FROM TABELA
                  WHERE CODPROD IN(
                  SELECT CODPROD
                  FROM TABELA
                  GROUP BY CODPROD,PVENDA
                  HAVING COUNT(*) < (SELECT COUNT(DISTINCT CODFILIAL) FROM TABELA)
                  );
                  [/quote]

                  PERFEITO!!
                  Agora sim muito obrigado!

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