none
Preciso Organizar query em ordem Crescente RRS feed

  • Pergunta

  • Tenho o seguinte código sql para a minha aplicação, que pega um valor e coloca esse valor dentro de uma lista, e depois que ela é inserida na lista quero organizar ela em ordem crescente, e é ai que não estou conseguindo organizar, sempre volta como na imagem abaixo.

     

    Preciso que essa linha fique em ordem crescente

    Por exemplo: 01 ;02 ;03 ;05 ;06 ;07 ;08 ;09 ; 10 ;11 ;12 ;

    *Já tentei usar o ORDER BY mas não deu certo... desse jeito:

    segunda-feira, 10 de outubro de 2022 15:14

Todas as Respostas

  • brunights,

    Neste caso você tem que tentar já passar o valor ordenado.

    Uma alternativa seria primeira ler os valores na tabela de origem, armazenar de uma forma ordenada em outra tabela e depois fazer o processo de armazenamento como uma lista.

    Se você estiver utilizando o SQL Server 2017 ou superior, poderá utilizar a função String_AGG justamente para fazer esta concatenação de valores.

    Veja o link:

    STRING_AGG (Transact-SQL) - SQL Server | Microsoft Learn


    Pedro Antonio Galvão Junior [MSc. | MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 10 de outubro de 2022 16:46
  • Já tentei utilizando o String_AGG e nao deu certo..
    segunda-feira, 10 de outubro de 2022 16:54
  • Brunights,

    Mas o que deu de errado? Você aplicou o Order By em conjunto com a função String_Agg?


    Pedro Antonio Galvão Junior [MSc. | MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 10 de outubro de 2022 17:06
  • Peguei o valor da tabela, joguei em uma variável e usei o STRING_AGG para ordenar, mas o valor retornado é o mesmo

    segunda-feira, 10 de outubro de 2022 17:24
  • Brunights,

    Veja se este exemplo poderá lhe ajudar:

    -- Criando --
    Create Table Numeros
     (CodigoNumeros Int Primary Key)
    Go
    
    -- Inserindo --
    Insert Into Numeros (CodigoNumeros) Values (5)
    Insert Into Numeros (CodigoNumeros) Values (95)
    Insert Into Numeros (CodigoNumeros) Values (35)
    Insert Into Numeros (CodigoNumeros) Values (157)
    Insert Into Numeros (CodigoNumeros) Values (62)
    Insert Into Numeros (CodigoNumeros) Values (1)
    Insert Into Numeros (CodigoNumeros) Values (10)
    Go
    
    -- Consultando --
    Select String_Agg(CodigoNumeros,';') As Numeracao From Numeros
    Order By Numeracao
    Go


    Pedro Antonio Galvão Junior [MSc. | MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 10 de outubro de 2022 17:27
  • Peguei o valor da tabela, joguei em uma variável e usei o STRING_AGG para ordenar, mas o valor retornado é o mesmo

    Remova a função Concat()

    Pedro Antonio Galvão Junior [MSc. | MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 10 de outubro de 2022 17:28
  • mesmo resultado

    segunda-feira, 10 de outubro de 2022 17:32
  • mesmo resultado

    Brunights,

    Você rodou o exemplo que eu compartilhei?

    A questão é que estes valores neste caso devem ser repassados já de forma ordenada, pois como você esta fazendo uma de um valor caracterer não tem como ajustar em tempo de execução.

    Em alguma parte do seu código, que armazenada o valor para a variável @Lista, você terá que fazer uso do Order By.


    Pedro Antonio Galvão Junior [MSc. | MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 10 de outubro de 2022 17:35
  • Boa tarde,

    brunights, pelo que entendi você pode utilizar a função String_Split para separar os valores que estão concatenados para depois concatena-los novamente de forma ordenada com a String_Agg. Ex:

    select String_Agg(Value, ' ;') within group (order by Value)
    from String_Split(@LISTA, ';') 
    where Value <> ''
    

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    segunda-feira, 10 de outubro de 2022 18:14
  • Boa tarde,

    brunights, pelo que entendi você pode utilizar a função String_Split para separar os valores que estão concatenados para depois concatena-los novamente de forma ordenada com a String_Agg. Ex:

    select String_Agg(Value, ' ;') within group (order by Value)
    from String_Split(@LISTA, ';') 
    where Value <> ''

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    Gapimex,

    Poxa vida, este lance de utilizar a opção WithIn Group aplicando o order by é bem interessante.


    Pedro Antonio Galvão Junior [MSc. | MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 11 de outubro de 2022 18:19
  • Olá Brunights,
     
    Alguma novidade sobre a consulta feita?
     
    A resposta fornecida foi útil?
     
    Obrigado por usar os fóruns do MSDN.
     
    Pablo Garcia
    ____________________________
    Por favor, lembre-se de "Marcar respostas" para respostas que resolveram seu problema, é uma maneira comum de reconhecer aqueles que ajudaram e torna mais fácil para outros visitantes encontrarem a solução mais tarde.
     
    Se você tiver algum elogio ou reclamação sobre o suporte do MSDN, sinta-se à vontade para entrar em contato com MSDNFSF@microsoft.com
    quarta-feira, 12 de outubro de 2022 17:55