Pular para o conteúdo
  • Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 4 anos, 1 mês atrás por Avatar de Claudio ReisClaudio Reis.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #145526
    Avatar de Claudio ReisClaudio Reis
    Participante

      Galera,
      Preciso concatenar os valores de uma coluna de uma mesma nota como fazer?
      exemplo: tenho 2 notas nota 001 , e nota 002 com coluna valor

      nota 001 com campo valor: 100 e 200;
      nota 002 com 1 linha com campo valor: 300;
      nota 003 com 3 linhas com campo valor: 400 e 500,600;

      quero q liste por nota assim:
      da nota 001 valor: 100,200.
      da nota 002 valor 300.
      da nota 003 valor 400,500 ,600;

      o que me importa ai seria a concatenação do campo valor por nota.

      #145527
      Avatar de Claudio ReisClaudio Reis
      Participante

        Galera só para complementar caso exista o mesmo resultado 2x ou mais no campo valor ele devera trazer apenas 1x

        tipo se tiver 110,110,200

        ele deve mostrar somente 110,200 sem repetir o mesmo valor

        #145528
        Avatar de Claudio ReisClaudio Reis
        Participante

          Eu encontrei este exemplo que quase deu certo mas ele repete os valores que mencionei acima

           

          SELECT DISTINCT
          A.nota,
          LISTAGG(b.valor, ‘,’) WITHIN GROUP (ORDER BY a.nota) AS valor
          FROM tabela_a a,
          tabela_b b
          where a.id = b.id
          group by nota;

          #145529
          Avatar de José Laurindo ChiappaJosé Laurindo Chiappa
          Moderador

            Blz ? Então, infelizmente vc Não nos Diz exatamente QUAL versão de Oracle vc está usando : SE FOR 19c vc já tem a possíbilidade de usar DISTINCT no LISTAGG , o que é justamente o que vc quer, acredito : vide https://livesql.oracle.com/apex/livesql/file/content_HT1O85E4BHSBWN93G1B3M8SI2.html para um exemplo…
            Já se vc NÃO estiver usando 19c mas sim alguma versão anterior, vc teria que usar algum ‘truque’ de programação : https://laurentschneider.com/wordpress/2014/05/distinct-listagg.html e https://intellipaat.com/community/33099/listagg-in-oracle-to-return-distinct-values listam alguns, um comum é vc pedir a LISTAGG não diretamente em cima da tabela desejada mas SIM em uma sub-query com essa tabela que peça DISTINCT da coluna onde vc não quer repetição, por exemplo…

            Abraços,

            Chiappa

            #145541
            Avatar de Claudio ReisClaudio Reis
            Participante

              Funcionou certinho.

              Valeu pela ajuda.

              Show.

               

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