Updade Firebird SQL

SQL Server

SQLite

Firebird

09/09/2015

Boa Noite pessoal.

Tenho uma tabela de clientes com as seguintes informações...

Codigo Nome Status
1 Joao A
2 Joao A
3 Pedro A
4 Marcos A
5 Marcos A

gostaria de mudar o status para I de um dos clientes que foram duplicados..

Ou seja queria desativar um e deixar o outro ativo..
EXemplo: Joao, deixar apenas um com A


Obrigado. desde já.
Antonelly Silva

Antonelly Silva

Curtidas 0

Mais Respostas

Rafael Bosco

Rafael Bosco

09/09/2015

---.
GOSTEI 0
Jothaz

Jothaz

09/09/2015

declare @tab table (Codigo int, Nome varchar(20), Status char(1)) 
insert into @tab (Codigo, Nome, Status) values (1, 'Joao', 'A') 
insert into @tab (Codigo, Nome, Status) values (2, 'Joao', 'A') 
insert into @tab (Codigo, Nome, Status) values (3, 'Pedro', 'A') 
insert into @tab (Codigo, Nome, Status) values (4, 'Marcos', 'A') 
insert into @tab (Codigo, Nome, Status) values (5, 'Marcos', 'A')

--Listando toda a tabela
select * from @tab 

--Listando duplicados
SELECT nome, count(*) FROM @tab 
GROUP BY nome
HAVING COUNT(*) > 1

--Listando duplicados - Recuperando o maior Codigo 
SELECT max(codigo) FROM @tab GROUP BY nome
HAVING COUNT(*) > 1

--Fazendo update do Status dos duplicados,no caso de maior Codigo
update @tab set status = 'I'
where codigo in (SELECT max(codigo) FROM @tab GROUP BY nome
HAVING COUNT(*) > 1)

--Listando toda a tabela com Status atualizado
select * from @tab 



[img]http://arquivo.devmedia.com.br/forum/imagem/418027-20151119-144248.png[/img]
GOSTEI 0
Marcos P

Marcos P

09/09/2015

No SQL Server...

create table #tab  (Codigo int, Nome varchar(20), Status char(1))
 
insert into #tab (Codigo, Nome, Status) values (1, 'Joao', 'A') 
insert into #tab (Codigo, Nome, Status) values (2, 'Joao', 'A') 
insert into #tab (Codigo, Nome, Status) values (3, 'Pedro', 'A') 
insert into #tab (Codigo, Nome, Status) values (4, 'Marcos', 'A') 
insert into #tab (Codigo, Nome, Status) values (5, 'Marcos', 'A')

update #tab
set Status = 'I'
where Codigo in (select Max(Codigo) from #tab group by Nome) and
      Nome in (select Nome from #tab group by Nome having count(1) > 1)
GOSTEI 0
POSTAR