Mam pytanie dotyczące SQL Server.Usuwanie duplikatów danych i ładowanie do innej tabeli w SQL Server
Tabela: emp
empid | name |sal
1 | abc |100
2 | def |200
3 | test |300
2 | har |500
3 | jai |600
4 | kali |240
Ta tabela zawiera zduplikowane dane na podstawie powyższej tabeli Chcę usunąć zduplikowane dane z tabeli
emp
i powielać dane powinny być ładowane do empduplicate
tabeli.
Tutaj empid
jest wyjątkowy. Jeśli empid
pojawia się wiele razy, to ten rekord jest uważany za duplikat.
empduplicate
struktura wygląda następująco:
Empid | name | sal
Wreszcie po usunięciu duplikatów danych, chcę zobaczyć dane emp
tabeli wyglądać następująco:
empid | name | sal
1 | abc | 100
4 | kali | 240
Do usuwania duplikatów, próbowałem ten kod :
;with duplicate as
(
select
*,
row_number()over (partition by empid order by empid) as rn
from emp
)
delete from duplicate
where rn > 1
Ale nie jestem w stanie usuń całe rekordy.
Przykład: empid=2
ma duplikatów danych
empid|name |sal
2 |def |200
2 |har |500
muszę usunąć cały empid=2
odpowiednie zapisy. empid=2
ma duplikat i trzeba go usunąć z tabeli emp
.
I empduplicate
stół trzeba ładować zduplikowane dane wyglądać następująco:
empid | name |sal
2 |def |200
2 |har |500
3 |test |300
3 |jai |600
wkładania zduplikowane dane Próbowałem ten kod:
insert into empduplicate
select
id, name, sal
from
emp
group by
id
having
count(*) > 1
To zapytanie zgłasza błąd:
Column 'duplicate.name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Proszę mi powiedzieć, jak napisać zapytanie, aby osiągnąć moje zadanie w SQL Server
Dzięki jego pracy grzywny – ravi