SQL Serverに関する質問があります。重複するデータを削除し、SQL Serverの別のテーブルにロードします
表:emp
empid | name |sal
1 | abc |100
2 | def |200
3 | test |300
2 | har |500
3 | jai |600
4 | kali |240
このテーブルには、私がemp
テーブル
から重複データを削除したデータはempduplicate
テーブルにロードする必要があり、重複たい上記の表に基づいて重複したデータを持っています。
ここでempid
はユニークです。 empid
が複数回現れた場合、そのレコードは重複していると見なされます。
empduplicate
構造は次のようになります。
Empid | name | sal
は、最後に重複データを削除した後、私はemp
テーブル内のデータは次のようになり見たい:
empid | name | sal
1 | abc | 100
4 | kali | 240
重複を削除するために、私はこのコードを試してみました:
;with duplicate as
(
select
*,
row_number()over (partition by empid order by empid) as rn
from emp
)
delete from duplicate
where rn > 1
しかし、私はできません全体のレコードをelete。
例:empid=2
は、私は全体empid=2
対応するレコードを削除する必要が
empid|name |sal
2 |def |200
2 |har |500
重複データを持っています。 empid=2
は重複しており、テーブルから削除する必要があります。
:そのクエリがエラーをスローしColumn 'duplicate.name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
insert into empduplicate
select
id, name, sal
from
emp
group by
id
having
count(*) > 1
:
empid | name |sal
2 |def |200
2 |har |500
3 |test |300
3 |jai |600
重複データを挿入するために、私はこのコードを試してみました:
そしてempduplicate
テーブルは次のようになり、重複データをロードする必要があります
SQL Serverで自分のタスクを達成するためのクエリを書く方法を教えてください
おかげでその作業罰金 – ravi