none
Separar pares e ímpares RRS feed

  • Pergunta

  • Bom dia amigos do fórum.

    Mais uma vez estou aqui precisando da ajuda de vocês. É o seguinte, tenho uma tabela com a estrutura: codigo, nome, numero_identificacao, cidade.

    Eu preciso criar uma istrução que me retorne primeiro todos os "numero_identificacao" pares e em seguida os ímpares, isso por cidade. Já tentei diversos recursos que conheco do SQL e não consegui montar essa instrução, se alguem puder me ajudar por favor, ficarei muito grato.

    Abraço a todos.

    terça-feira, 22 de fevereiro de 2011 13:33

Respostas

  • A logica é:

    SELECT ID FROM tabela WHERE (ID % 2) = 0 -- APARECE PAR
    SELECT ID FROM tabela WHERE (ID % 2) <> 0 --APARECE  IMPAR

    []'S!


    http://www.diaadiasql.com.br
    • Sugerido como Resposta Renato J. Alves terça-feira, 22 de fevereiro de 2011 13:44
    • Marcado como Resposta andersonbtr terça-feira, 22 de fevereiro de 2011 13:58
    terça-feira, 22 de fevereiro de 2011 13:37
  • Anderson,

     

    Veja o exemplo a seguir:

     

     

    declare @tab table (id int)

    insert into @tab values(1)

    insert into @tab values(2)

    insert into @tab values(3)

    insert into @tab values(4)

    insert into @tab values(5)

    select * from @tab

    where id%2=0

    select * from @tab

    where id%2<>0

     

     

    Ele utiliza uma coisa de programação chamada MOD, que retorna o resto, portanto, se o numero for par, seu MOD em relação a 2 é 0, se impar, é diferente de 0.


    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    • Marcado como Resposta andersonbtr terça-feira, 22 de fevereiro de 2011 13:58
    terça-feira, 22 de fevereiro de 2011 13:39
    Moderador
  • Segue novo script:

     

    declare @tab table (id int)

    insert into @tab values(1)

    insert into @tab values(2)

    insert into @tab values(3)

    insert into @tab values(4)

    insert into @tab values(5)

    select * from @tab

    where id%2=0

    union all

    select * from @tab

    where id%2<>0

     

     

    REPARE NO UNION ALL, ELE IRA JUNTAR AS 2 QUERYS, MAS AS COLUNAS DAS QUERYS TEM QUE SER DO MSM TIPO DE DADOS E TER O MESMO NUMERO DE COLUNAS, CREIO QUE PARA VOCE IRA FUNCIONAR.


    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    • Marcado como Resposta andersonbtr terça-feira, 22 de fevereiro de 2011 13:58
    terça-feira, 22 de fevereiro de 2011 13:51
    Moderador
  • Faz assim:

     

    SELECT * ,CASE a%2 WHEN 0 THEN 'PAR' ELSE 'IMPAR' END
    FROM #teste
    
    
    []'s!


    http://www.diaadiasql.com.br
    • Marcado como Resposta andersonbtr quarta-feira, 23 de fevereiro de 2011 13:45
    terça-feira, 22 de fevereiro de 2011 13:59

Todas as Respostas

  • A logica é:

    SELECT ID FROM tabela WHERE (ID % 2) = 0 -- APARECE PAR
    SELECT ID FROM tabela WHERE (ID % 2) <> 0 --APARECE  IMPAR

    []'S!


    http://www.diaadiasql.com.br
    • Sugerido como Resposta Renato J. Alves terça-feira, 22 de fevereiro de 2011 13:44
    • Marcado como Resposta andersonbtr terça-feira, 22 de fevereiro de 2011 13:58
    terça-feira, 22 de fevereiro de 2011 13:37
  • Anderson,

     

    Veja o exemplo a seguir:

     

     

    declare @tab table (id int)

    insert into @tab values(1)

    insert into @tab values(2)

    insert into @tab values(3)

    insert into @tab values(4)

    insert into @tab values(5)

    select * from @tab

    where id%2=0

    select * from @tab

    where id%2<>0

     

     

    Ele utiliza uma coisa de programação chamada MOD, que retorna o resto, portanto, se o numero for par, seu MOD em relação a 2 é 0, se impar, é diferente de 0.


    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    • Marcado como Resposta andersonbtr terça-feira, 22 de fevereiro de 2011 13:58
    terça-feira, 22 de fevereiro de 2011 13:39
    Moderador
  • Desde já agradeço as respostas amigos...eu até conheço o MOD, caputofa, consegui chegar nessas duas instruções que você me mostrou, pode até ser muita navalhada minha, mas o problema é juntar as duas em uma só instrução, isso que eu não consegui fazer.É que como eu to dando esse comando do código fonte, eu preciso dar um comando só.

    terça-feira, 22 de fevereiro de 2011 13:49
  • Segue novo script:

     

    declare @tab table (id int)

    insert into @tab values(1)

    insert into @tab values(2)

    insert into @tab values(3)

    insert into @tab values(4)

    insert into @tab values(5)

    select * from @tab

    where id%2=0

    union all

    select * from @tab

    where id%2<>0

     

     

    REPARE NO UNION ALL, ELE IRA JUNTAR AS 2 QUERYS, MAS AS COLUNAS DAS QUERYS TEM QUE SER DO MSM TIPO DE DADOS E TER O MESMO NUMERO DE COLUNAS, CREIO QUE PARA VOCE IRA FUNCIONAR.


    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    • Marcado como Resposta andersonbtr terça-feira, 22 de fevereiro de 2011 13:58
    terça-feira, 22 de fevereiro de 2011 13:51
    Moderador
  • Caputofa, mais uma vez muito obrigado, era exatamente isso que estava precisando, não conhecia esse comando "union all"..... Grande abraço!
    terça-feira, 22 de fevereiro de 2011 13:59
  • Faz assim:

     

    SELECT * ,CASE a%2 WHEN 0 THEN 'PAR' ELSE 'IMPAR' END
    FROM #teste
    
    
    []'s!


    http://www.diaadiasql.com.br
    • Marcado como Resposta andersonbtr quarta-feira, 23 de fevereiro de 2011 13:45
    terça-feira, 22 de fevereiro de 2011 13:59