none
ordenar valores RRS feed

  • 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

    domingo, 6 de maio de 2012 22:38

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


    segunda-feira, 7 de maio de 2012 15:39

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
    domingo, 6 de maio de 2012 23:16
  • Deleted
    domingo, 6 de maio de 2012 23:22
  • Deleted
    domingo, 6 de maio de 2012 23:25
  • 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.br

    Se 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.

    segunda-feira, 7 de maio de 2012 00:37
    Moderador
  • 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

    segunda-feira, 7 de maio de 2012 10:54
  • Deleted
    segunda-feira, 7 de maio de 2012 11:18
  • 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

    segunda-feira, 7 de maio de 2012 11:43
  • Deleted
    segunda-feira, 7 de maio de 2012 11:52
  • está funcionando.

    Mas se quiser incorporar um distinct como faço?

    mensagem de erro:

    ORDER BY items must appear in the select list if SELECT DISTINCT is specified.

    Obrigado


    Visual Basic 2008 Express Edition SQL Server Management Studio

    segunda-feira, 7 de maio de 2012 12:56
  • 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


    segunda-feira, 7 de maio de 2012 15:39