UPDATE DE UMA TABELA
alguem poderia me ajudar nesse update ..o problema é que a cada quebra de id_cliente queria que começasse do 1 ou seja ,se tenho
id = 1000 queria sq_lancto 1 depois 2,depois 3 e assim vai .. quando viesse o id = 1001 queria q começasse de novo com 1,2,3,e ai vai ...
DECLARE @id INT
SET @id = 0
UPDATE TAB_OBSERVACOESCOBRANCA
SET @id = SQ_LANCTO = @id + 1
WHERE ID_CLIENTE IN (SELECT ID_CLIENTE FROM TAB_OBSERVACOESCOBRANCA )
id = 1000 queria sq_lancto 1 depois 2,depois 3 e assim vai .. quando viesse o id = 1001 queria q começasse de novo com 1,2,3,e ai vai ...
DECLARE @id INT
SET @id = 0
UPDATE TAB_OBSERVACOESCOBRANCA
SET @id = SQ_LANCTO = @id + 1
WHERE ID_CLIENTE IN (SELECT ID_CLIENTE FROM TAB_OBSERVACOESCOBRANCA )
FERRUBIM,
Fiz um exemplo no Oracle , mas no SQL é a mesma lógica, ok. Segue abaixo exemplo:
Obs,: Para funcionar, você tem que ter mais de uma condição no Where do UPDATE, senão, vai sair tudo com o mesmo valor e que será o valor do último Update. Por isso acrescentei o ID_PROD para diferenciar os registros no exemplo. Dai você muda de acordo com os dados da sua tabela;
Fiz um exemplo no Oracle , mas no SQL é a mesma lógica, ok. Segue abaixo exemplo:
CREATE TABLE TAB_OBSERVACOESCOBRANCA
(
ID INT NULL
,ID_CLIENTE INT NULL
,ID_PROD INT NULL
);
INSERT INTO TAB_OBSERVACOESCOBRANCA VALUES (NULL, 1,11);
INSERT INTO TAB_OBSERVACOESCOBRANCA VALUES (NULL, 1,15);
INSERT INTO TAB_OBSERVACOESCOBRANCA VALUES (NULL, 1,23);
INSERT INTO TAB_OBSERVACOESCOBRANCA VALUES (NULL, 1,87);
INSERT INTO TAB_OBSERVACOESCOBRANCA VALUES (NULL, 2,88);
INSERT INTO TAB_OBSERVACOESCOBRANCA VALUES (NULL, 2,63);
INSERT INTO TAB_OBSERVACOESCOBRANCA VALUES (NULL, 2,56);
DECLARE
ID_SEQ NUMBER(10) :=0;
ID_CLI_ATU NUMBER(10) :=0;
ID_CLI_ANT NUMBER(10) :=0;
BEGIN
FOR C_PROCESSO IN
(
SELECT ID_CLIENTE, ID_PROD FROM TAB_OBSERVACOESCOBRANCA ORDER BY ID_CLIENTE
)
LOOP
ID_CLI_ATU := C_PROCESSO.ID_CLIENTE;
IF (ID_SEQ = 0) THEN
ID_SEQ := 1;
ELSIF (ID_CLI_ATU = ID_CLI_ANT) THEN
ID_SEQ := ID_SEQ + 1;
ELSE
ID_SEQ := 1;
END IF ;
UPDATE TAB_OBSERVACOESCOBRANCA SET ID = ID_SEQ
WHERE
ID_CLIENTE = C_PROCESSO.ID_CLIENTE
AND ID_PROD = C_PROCESSO.ID_PROD;
COMMIT;
ID_CLI_ANT := C_PROCESSO.ID_CLIENTE;
END LOOP;
END;
Obs,: Para funcionar, você tem que ter mais de uma condição no Where do UPDATE, senão, vai sair tudo com o mesmo valor e que será o valor do último Update. Por isso acrescentei o ID_PROD para diferenciar os registros no exemplo. Dai você muda de acordo com os dados da sua tabela;
Tópico encerrado , respostas não são mais permitidas