Inquiridor
Preciso Organizar query em ordem Crescente

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:
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]
-
-
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]
-
-
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]
-
Peguei o valor da tabela, joguei em uma variável e usei o STRING_AGG para ordenar, mas o valor retornado é o mesmo
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]
-
-
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]
-
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
-
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]
-
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