2013-10-06 7 views
1

많은 중복 값이있는 데이터 파일이 있습니다. 원래 값과 중복 값을 모두 식별하고 원본 값과 중복 값을 나란히 정렬해야합니다. 꼬인 표가있는 중복 값 찾기

내 데이터 파일 제목

는 데이터와 함께 다음과 같이 있습니다 :

enter image description here

I 데이터는 다음과 같이 할 것을 권장합니다

enter image description here

내가 이미 중복 값을 발견했다 다음 검색어를 사용 :

SELECT a.[wallet] into KYCNew2 
    from [dbo].[KYCNew1] A 
GROUP BY a.[wallet] 
    HAVING COUNT(*) > 1 

중복 된 값만 표시됩니다. 그러나 원래 값과 중복 값 및 관련 데이터를 나란히 정렬하는 방법을 알지 못합니다. 어느 누구도 제발 도와주지 않겠습니까?

+0

그것은 하나 개의 쿼리에 있어야합니까? –

+0

복제 및 원래 값을 어떻게 식별 하시겠습니까? 활성 날짜 등의 모든 열 또는 활성 비활성 등의 플래그 ??? –

+0

잘라내어 붙여 넣을 수있는 이미지로 이미지를 변경할 수 있습니다. – Laurence

답변

0

어때? row_number를 사용하여 지갑 테이블 자체에 가입하십시오.

;with wallet as (
select 
    '01703136838 (1)' as [Account Name], 'X:\Scanned KYC\All Scanned' as [Path] 
union all select 
    '01703136838 (1)' as [Account Name], 'X:\Scanned KYC\All Scanned' as [Path] 
union all select 
    '01703136838 (2)' as [Account Name], 'X:\Scanned KYC\All Scanned' as [Path] 
union all select 
    '01703136838 (2)' as [Account Name], 'X:\Scanned KYC\All Scanned' as [Path] 
union all select 
    '01703136875 (1)' as [Account Name], 'X:\Scanned KYC\All Scanned' as [Path] 
union all select 
    '01703136852 (2)' as [Account Name], 'X:\Scanned KYC\Backup All' as [Path] 
union all select 
    '01703136852 (2)' as [Account Name], 'X:\Scanned KYC\Backup All' as [Path]  
union all select 
    '01703136858 (2)' as [Account Name], 'X:\Scanned KYC\Backup All' as [Path]  
    ), 
orderby as 
(select 
    ROW_NUMBER() OVER(PARTITION BY [account name], [path] order by [account name]) as rid 
    ,[account name] 
    ,[path] 
from 
    wallet) 
select 
    a.[account name] 
    ,a.[path] 
    ,b.[path] + case when a.[path] like '%backup%' then '\b' else '\a' end 
from 
    orderby as a left join orderby as b 
on a.[account name] = b.[account name] and a.rid = b.rid - 1 
where 
    a.rid = 1 
1

row_number()pivot의 조합이 할 것입니다. 당신은 모든 것을보기 위해 손으로 볼 수있는 최대 복제 수를 알아야합니다.

Select 
    account, 
    [1] as path1, 
    [2] as path2 
From (
    select 
    account, 
    path, 
    row_number() over (partition by account order by path) r 
    From 
    Dups 
) x 
pivot (
    min(path) 
for 
    r in ([1], [2]) 
) piv 

Example Fiddle