login register Sysop! about ME  

2019년 02월 22일 12시 25분 00초,     조회수 : 341
  제목 : distinct 를 이용해서 상위 1개씩만 남기고 삭제
SEQ : 28414 글쓴이 : ksi0824

작성 포맷 : TEXT 모드, 자동 줄바꿈 사용

select distinct idx,transnum from transtmpdata order by transnum

idx    transnum
69	   231012088661
70	   231012088661
71	   231012088672
72	   231012088672
73	   231012088683
74	   231012088683

위 쿼리결과에서 동일한 transnum의 레코드를 상위 1개씩만 남기고 삭제 하려면 어떻게 쿼리를 써야 할까요?

원하는 결과

idx    transnum
69	   231012088661
71	   231012088672
73	   231012088683


  supercore
  2019-02-27(10:20)
캐릭 이미지
declare @t_origin table (idx int, transnum bigint)

insert into @t_origin
values
(69, 231012088661),
(70, 231012088661),
(71, 231012088672),
(72, 231012088672),
(73, 231012088683),
(74, 231012088683),
(75, 231012088683);

with cte_except as (
select
row_number() over(partition by transnum order by idx asc) as row_num,
idx, transnum
from @t_origin
)

delete from @t_origin
from @t_origin as a
inner join cte_except as b on a.idx = b.idx
where b.row_num > 1



제목 작성자 날짜 조회
distinct 를 이용해서 상위 1개씩만 남기고 삭제 (1) ksi0824 2019-02-22 341
RE : distinct 를 이용해서 상위 1개씩만 남기고 삭제 mabari99 2019-02-28 302

 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})