Ajuda com Insert

24/09/2010

0

Olá  Amigos  bom  dia, antes de mais nada quero me apresentar meu nome é Adílio, é  muito bom  poder contar com vcs, Preciso de uma ajuda, trabalho com um sistema comercial onde existe um cadastro de  grupos  onde  as chaves primarias da tabela  forma feitas  sem nenhum critério, hj  preciso  reordenar esta coluna  inserindo valores iniciados por  0001 sendo incrementado até 4000,  alguém teria uma comando que renumerasse esta coluna? desde já muito obrigado. Nome do Banco de dados SingemSQL, nome da tabela Cad_grupos  nome da coluna  grupo.
Adilio Cunha

Adilio Cunha

Responder

Posts

27/09/2010

Emerson Nascimento

há algum parâmetro para ordenação dos dados atuais da tabela?
Responder

04/10/2010

Adilio Cunha

Não, não há  necessidade   de ordanamento  pois o valor  atual dos campos é literal, posso inclusive dar um  delete  no conteudo da coluna e deixa-la  em branco, contanto que o comando numere todas as linhas iniciando de  0001 até 4000   Muito  obrigado.
Responder

05/10/2010

André Pinha

muito simples amigo
crie uma varial que irá incrementar de 1 até 4000 por exemplo
DECLARE @i INT

depois declare um cursor
DECALRE ccIndice CURSOR for
SELECT Campo1, Campo2,... FROM TABELA
OPEN ccIndice
WHILE (1=1)
BEGIN
   FETCH NEXT FROM ccIndice  INTO @var1, @var2
   IF (@@FETCH_STATUS <> 0) break
  
  
 

END
CLOSE ccIndice
DEALLOCATE ccIndice
Responder

05/10/2010

Emerson Nascimento

Não, não há  necessidade   de ordanamento  pois o valor  atual dos campos é literal, posso inclusive dar um  delete  no conteudo da coluna e deixa-la  em branco, contanto que o comando numere todas as linhas iniciando de  0001 até 4000   Muito  obrigado.


certo. mas é preciso haver algum meio de ordenar para que seja possível atribuir o valor correto.
vou supor que dá pra ordenar por codigo + descricao.

teste a seguinte instrução para obtenção da numeração:

select
  g.codigo codigoatual,  g.descricao,
  (select count(*) from grupos g2
   where g2.codigo + g2.descricao <= g.codigo + g.descricao) codigonovo
from
  grupos g
order by
  g.codigo, g.descricao

esta instrução deverá trazer a coluna virtual codigonovo com os valores sugeridos para renumeração.
se a coluna estiver com os valores corretos, basta executar a instrução de alteração:

update grupos set codigo = (select count(*) from grupos g2 where g2.codigo + g2.descricao <= grupos.codigo + grupos.descricao)

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar