Usuário com melhor resposta
ordenar valores

Pergunta
-
boas
Quando faço uma consulta do tipo..
select tipo from tabela order by tipo
os valores que aparecem são:
tipo 1
tipo 2
tipo 3
...
tipo 10
tipo 11
Mas aparecem ordenados da seguinte forma:
tipo 1
tipo 10
tipo 11
tipo 2
tipo 3
tipo 4
Como faço para aparecerem ordenados corretamente?
Obrigado
Visual Basic 2008 Express Edition SQL Server Management Studio
Respostas
-
Ola Jonas,
O erro esta dizendo que o campo que voce está ordenando tem que aparecer no seu select
DECLARE @tabela TABLE( Escola VARCHAR(20) ) INSERT INTO @tabela VALUES ('Escola 1'),('Escola 2'),('Escola 3'),('Escola 4'),('Escola 10'),('Escola 11') SELECT DISTINCT CONVERT(INT,RIGHT(Escola,LEN(Escola)-PATINDEX('% [1-9]%',Escola))) as Ordem ,Escola FROM @tabela ORDER BY Ordem
Att.
Lukas Baldan- Editado Lukas de Castro Ruocco Baldan segunda-feira, 7 de maio de 2012 15:39
- Marcado como Resposta Harley Araujo quarta-feira, 23 de maio de 2012 14:32
Todas as Respostas
-
Boa noite,
Acredito que você esteja obtendo este resultado porque a coluna tipo seja do tipo varchar ou semelhante.
Experimente desta forma:
select tipo from tabela order by Cast(tipo as integer)
Espero que ajude.
Assinatura: Imobiliarias em Guarulhos
- Editado Imex domingo, 6 de maio de 2012 23:17
-
-
-
Um alternativa é criar uma coluna computada somente com a parte inteira da coluna atual.
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta. -
proposta do Imex:
Conversion failed when converting the nvarchar value 'Semana 1' to data type int.
proposta do Rafael:
Conversion failed when converting the nvarchar value 'a ' to data type int.
o campo está em nvarchar.
Como resolvo?
Obirgado
Visual Basic 2008 Express Edition SQL Server Management Studio
-
-
erro meu. na coluna tipo está resolvido.
agora estava a tentar implementar noutra coluna, nvarchar(max) com a seguinte palavras:
Escola 1
mas sem sucesso. Mensagem de erro:
Invalid length parameter passed to the LEFT or SUBSTRING function.
valeu
Visual Basic 2008 Express Edition SQL Server Management Studio
-
-
-
Ola Jonas,
O erro esta dizendo que o campo que voce está ordenando tem que aparecer no seu select
DECLARE @tabela TABLE( Escola VARCHAR(20) ) INSERT INTO @tabela VALUES ('Escola 1'),('Escola 2'),('Escola 3'),('Escola 4'),('Escola 10'),('Escola 11') SELECT DISTINCT CONVERT(INT,RIGHT(Escola,LEN(Escola)-PATINDEX('% [1-9]%',Escola))) as Ordem ,Escola FROM @tabela ORDER BY Ordem
Att.
Lukas Baldan- Editado Lukas de Castro Ruocco Baldan segunda-feira, 7 de maio de 2012 15:39
- Marcado como Resposta Harley Araujo quarta-feira, 23 de maio de 2012 14:32