Ajuda com Insert
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
Curtidas 0
Respostas
Emerson Nascimento
24/09/2010
há algum parâmetro para ordenação dos dados atuais da tabela?
GOSTEI 0
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
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
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
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