Ajuda com Insert

SQL Server

24/09/2010

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

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

24/09/2010

há algum parâmetro para ordenação dos dados atuais da tabela?
GOSTEI 0
Adilio Cunha

Adilio Cunha

24/09/2010

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.
GOSTEI 0
André Pinha

André Pinha

24/09/2010

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
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

24/09/2010

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)

GOSTEI 0
POSTAR