Array
(
)

Ajuda com Insert

Adilio Cunha
   - 24 set 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.

Emerson
   - 27 set 2010

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

Adilio Cunha
   - 04 out 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.

André Pinha
   - 05 out 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

Emerson
   - 05 out 2010


Citação:
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)