Como criar uma coluna numérica sequencial?



  • Como eu posso criar uma coluna numérica sequencial em uma consulta?

    Ex: 01
    02
    03
    04
    05
    06

    Tentei usar Agregado "Count" mas, o resultado é o total de linhas em todas a linhas:

    Ex 05
    05
    05
    05
    05

    Preciso que a consulta conte linha por linha conforme o exemplo.
    Fico no aguardo...


  • Sql server e postgres utilizam o row_number(). Outros bancos possuem sua própria sintaxe. Procura por isso na net.

    Um ex:

    SELECT
    row_number() OVER (ORDER BY col1) AS i,
    e.col1,
    e.col2,
    ...
    FROM ...


  • Eu tentei algumas formas que encontrei na internet, inclusive essa forma que você me sugestionou mas, todas estão emitindo erro:

    [b]Erro ao executar consulta syntax error at or near "over"[/b]

    [img]http://i61.tinypic.com/fozucz.jpg[/img]


  • Teste diretamente a consulta em seu banco de dados, depois vc vai para o maker.


  • Não sei se estou fazendo errado a consulta mas, emite um erro bem semelhante.

    Montei o Select da seguinte forma: [quote]SELECT
    row_number() OVER (ORDER BY fic_emissao) AS fic_cont,
    fic_emissao,
    fic_entrada,
    fic_entrada,
    FROM pro_porcesso_fichamento[/quote] [b]ERROR: syntax error at or near "OVER"
    SQL state: 42601
    Character: 23[/b]




    [img]http://i62.tinypic.com/xnuuqr.png[/img]


  • Tem uma vírgula antes do seu FROM!

    Executa esse exemplo aí:

    SELECT
    ROW_NUMBER() OVER (order by aco_codigo) row_number,
    ACO_CODIGO,
    ACO_NOME
    from fr_acao


  • SELECT
    ROW_NUMBER() OVER (order by fic_emissao) row_number,
    fic_emissao,
    fic_entrada,
    fic_saida
    from pro_porcesso_fichamento

    Não deu certo não, emitiu mesmo erro:

    [b]ERROR: syntax error at or near "OVER"
    SQL state: 42601
    Character: 22
    [/b]


    [img]http://i58.tinypic.com/2qtfv9d.png[/img]

    Não seria algo próximo a ...ER() OVER (orde... ?


  • Qual a versão do seu postgres?
    Testou o comando que eu passei?


  • Meu postgresql e o 8.2 e estou executando o comando exatamente com está me passou.


  • Execute esse e mostre o resultado:


    SELECT
    ROW_NUMBER() OVER (order by aco_codigo) row_number,
    ACO_CODIGO,
    ACO_NOME
    from fr_acao


  • Agora eu entendi, me pediu para testar usando exatamente o que escreveu. Infelizmente me retorna o mesmo erro.

    [b]ERROR: syntax error at or near "OVER"
    SQL state: 42601
    Character: 22[/b]


    [img]http://i61.tinypic.com/10n84zp.png[/img]


  • É... postgres 8.2 não tem essa função...

    Achei uma solução alternativa na net.. trabalhar com nextval.. não sei se é a melhor opção. Dá uma olhada aí..
    http://www.depesz.com/2007/08/17/rownum-anyone-cumulative-sum-in-one-query/


  • Funcionou perfeitamente. Segui as dicas do link que em passou e deu tudo certo.

    [b]SQL:
    CREATE TEMP SEQUENCE iten_seq;
    SELECT
    NEXTVAL('iten_seq'),
    ACO_NOME,
    ACO_CODIGO
    FROM fr_acao[/b]


    [img]http://i61.tinypic.com/2zgx2mw.png[/img]

    Porem, como faço para transferir isso para o Maker?
    [img]http://i62.tinypic.com/a4v4p4.png[/img]

    Já tentei editar a aba "SQL" e não consegui
    [img]http://i58.tinypic.com/2qc1nd4.png[/img]


  • Se for somente para consulta...
    Faz uma visão com a sintaxe que seu banco aceita... e usa essa visão no Maker.

Log in to reply