sql 일부 필드 에서 중복 되 는 데 이 터 를 어떻게 삭제 합 니까?

1395 단어 sql
사고방식: 가장 큰 rowid 를 찾 으 면 됩 니 다.
 
alter proc getNotDupData
as

--clear temp table
delete ODS.dbo.Agent
delete from stage.dbo.tmpDup
delete from stage.dbo.tmpRowNo
delete from stage.dbo.tmpMaxRowNo
--create dup table
insert into stage.dbo.tmpDup
select distinct AgentLogin,AgentSurName,AgentGivenName   from stage.dbo.dAgentPerformanceStat
where AgentSurname is not null and agentlogin like '3%'  order by AgentLogin

--add rowNo
insert into tmpRowNo
select *,ROW_NUMBER()over(order by AgentLogin) as rowno  from tmpDup 

--get max rowno
insert into  stage.dbo.tmpMaxRowNo
select max(rowno) as 'rowno'   from stage.dbo.tmpRowNo  group by AgentLogin having count(*)>1
            ,  。

--remove max rowno
delete from stage.dbo.tmpRowNo where  rowno in (select * from stage.dbo.tmpMaxRowNo)

--insert into ods
insert into ODS.dbo.Agent select AgentLogin,AgentSurName,AgentGivenName from stage.dbo.tmpRowNo

 
 
 
다른 중 복 된 예 를 삭제 하 는 것 은 위의 것 과 비슷 하지만 서로 다른 항목 에 사용 되 는 것 은 여기에 두 어 인상 을 깊 게 합 니 다.
 
select max(id) from T_CUST_CUSTINFO_12 where a627='yc201204-5'  group by a606 having count(*)>1
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기