none
Número Sequencial para Registros Repetidos RRS feed

  • Pergunta

  • Boa Tarde, preciso de uma solução para trazer no meu SELECT, um campo que enumere os registros que estão repetidos. ex:

    Supondo que meu SELECT retorne 5 linhas:

    Brasil | São Paulo | Vila Maria

    Brasil | São Paulo | Guarulhos

    Brasil | Rio de Janeiro | Ipanema

    Brasil | Rio de Janeiro | Leblon

    Brasil | Santa Catarina | Florianópolis 

     

    Preciso que o SELECT me retorne um "contador" dos registros agrupados pelo País e pelo Estado, conforme abaixo:

    Brasil | São Paulo | Vila Maria | 1

    Brasil | São Paulo | Guarulhos | 2

    Brasil | Rio de Janeiro | Ipanema | 1

    Brasil | Rio de Janeiro | Leblon | 2

    Brasil | Santa Catarina | Florianópolis | 1

    Grato pela ajuda,

    Mondra

     

     

     

    quarta-feira, 25 de janeiro de 2012 19:08

Respostas

  • Mondraer

    seguindo a ideia do Ozimar, voc"e deve usar o row_number que funciona para edições >= SQL 2005

    Ozimar vc esqueceu de informar o Partition By

    select pais, estado, cidade , ROW_NUMBER() over(partition by pais, estado order by pais, estado, cidade) Contador from Sessao 

     


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba


    quinta-feira, 26 de janeiro de 2012 10:50
    Moderador

Todas as Respostas

  • SELECT pais, estado, cidade, count(*) as Total

    FROM Tabela

    group by pais, estado, cidade

     

     


    Ozimar Henrique
    http://ozimar.com

    Se a resposta lhe ajudou, favor marcar como útil.
    • Sugerido como Resposta Ozimar Henrique quarta-feira, 25 de janeiro de 2012 20:17
    quarta-feira, 25 de janeiro de 2012 20:17
  • Oi Ozimar,

    O count(*) me traria 1 em cada registro.

    O que estou precisando é que nos registros onde estão Brasil | São Paulo me traga o nro 1 para o primeiro registro e nro 2 para o segundo registro.

    Valeu,

    quinta-feira, 26 de janeiro de 2012 09:47
  • Veja se é isto que vc quer:

     

    select  pais, estado, cidade , ROW_NUMBER() over(order by  pais, estado, cidade) Contador

    from Sessao

    group by pais, estado, cidade

    Abraços


    Ozimar Henrique
    http://ozimar.com

    Se a resposta lhe ajudou, favor marcar como útil.
    • Sugerido como Resposta Ozimar Henrique quinta-feira, 26 de janeiro de 2012 10:29
    • Não Sugerido como Resposta Ozimar Henrique quinta-feira, 26 de janeiro de 2012 10:57
    quinta-feira, 26 de janeiro de 2012 10:29
  • Mondraer

    seguindo a ideia do Ozimar, voc"e deve usar o row_number que funciona para edições >= SQL 2005

    Ozimar vc esqueceu de informar o Partition By

    select pais, estado, cidade , ROW_NUMBER() over(partition by pais, estado order by pais, estado, cidade) Contador from Sessao 

     


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba


    quinta-feira, 26 de janeiro de 2012 10:50
    Moderador
  • Correto Marcelo, como o Mondraer disse que nao vai se repetir e também o agrupamento pedido foi somente por pais/estado entao o correto ficaria:

    SELECT pais, estado, cidade , ROW_NUMBER() OVER(partition by pais, estado order by pais, estado) Contador 
    FROM Tabela 
    

     

    Desculpa a falha, coisas do sono, rs

     

    Abraços

     


    Ozimar Henrique
    http://ozimar.com

    Se a resposta lhe ajudou, favor marcar como útil.
    quinta-feira, 26 de janeiro de 2012 11:05
  • Grande Ozimar! foi a luz que me faltava!

    Era o ROW_NUMBER mesmo ! foi só acrescentar o PARTITION BY Estado e ficou certinho !

    Muito obrigado,

    Abraço

    • Marcado como Resposta Mondraer quinta-feira, 26 de janeiro de 2012 11:17
    • Não Marcado como Resposta Mondraer quinta-feira, 26 de janeiro de 2012 11:20
    quinta-feira, 26 de janeiro de 2012 11:17