none
Criar campo sequencial numerico RRS feed

  • Pergunta

  • Estou fazendo SELECT em algumas tabelas para imigração de sistema, nesse novo sistema ele pede um campo de protocolo (como não temos este campo e vou inserir ele somente no aplicativo) estou criando através do campo data e usuário e ele tem de ficar assim 

    (dtProtocolo,'yyMMdd')+(dtProtocolo,'HHmmss')+(nUsuario,3,0).

    O meu problema que o campo usuario é texto e não numerio, gostaria de saber se na hora do select tem como criar um campo que seja uma numeração sequencial referente ao campo usuario?

    Obrigado.

    quarta-feira, 20 de julho de 2011 18:57

Respostas

  • Thiago

    qual a versão de seu SQL, se for 2005 ou superior use o row_number

    declare @tbTeste table (dtProtocolo datetime, nUsuario varchar(10))
    insert into @tbTeste values (GETDATE(),'C3PO'),('20110805 05:05:05','R2D2'),('20110915 15:45:21','YODA')
    
    select convert(varchar(8),dtProtocolo,112)+'-'+ convert(varchar(8),dtProtocolo,108)+'-'+nUsuario+'-'+convert(varchar(4),ROW_NUMBER() over(order by dtProtocolo,nUsuario))
    from @tbTeste
    

     

    Att.
    Marcelo Fernandes


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

    • Sugerido como Resposta Eder Costa sexta-feira, 22 de julho de 2011 18:11
    • Marcado como Resposta Eder Costa segunda-feira, 25 de julho de 2011 17:02
    quarta-feira, 20 de julho de 2011 19:58
    Moderador

Todas as Respostas

  • Thiago, se você estiver usando uma Stored Procedure, você pode criar uma variável que recebe a ID do usuário e inserir essa ID no padrão que citou acima.

    "Mas a persistência é o que leva a perfeição."
    • Sugerido como Resposta Eder Costa sexta-feira, 22 de julho de 2011 18:11
    quarta-feira, 20 de julho de 2011 19:11
  • Obrigado
    quarta-feira, 20 de julho de 2011 19:57
  • Thiago

    qual a versão de seu SQL, se for 2005 ou superior use o row_number

    declare @tbTeste table (dtProtocolo datetime, nUsuario varchar(10))
    insert into @tbTeste values (GETDATE(),'C3PO'),('20110805 05:05:05','R2D2'),('20110915 15:45:21','YODA')
    
    select convert(varchar(8),dtProtocolo,112)+'-'+ convert(varchar(8),dtProtocolo,108)+'-'+nUsuario+'-'+convert(varchar(4),ROW_NUMBER() over(order by dtProtocolo,nUsuario))
    from @tbTeste
    

     

    Att.
    Marcelo Fernandes


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

    • Sugerido como Resposta Eder Costa sexta-feira, 22 de julho de 2011 18:11
    • Marcado como Resposta Eder Costa segunda-feira, 25 de julho de 2011 17:02
    quarta-feira, 20 de julho de 2011 19:58
    Moderador