2014-06-17 4 views
2

나는 이름 목록을 중복 제거하고 이름순으로 정렬해야하는 SSIS 패키지에서 작업하고 있습니다. 접두사, 중간 이름 및 접미사와 같은 추가 열이 있습니다. 난 그냥 행이 살아남을 것입니다있는 용어로는 추첨의 행운 년대 속는을 제거 정렬 할 경우임의로 제거하는 대신 중복 행 병합

+========+===========+============+==========+========+ 
| Prefix | FirstName | MiddleName | LastName | Suffix | 
+========+===========+============+==========+========+ 
|  | John  |   | Doe  |  | 
+--------+-----------+------------+----------+--------+ 
| Mr. | John  |   | Doe  |  | 
+--------+-----------+------------+----------+--------+ 
|  | John  | A.   | Doe  |  | 
+--------+-----------+------------+----------+--------+ 

: 나는 발생하고있어 문제는 어떤 상황에서 내가 좋아하는 속는을 가지고있다. 그러나 분명히, 가능한 한 많은 정보를 보존하는 것을 선호합니다.

최상의 결과를 얻으려면이 세 가지를 병합하여 내 결과 집합에 포함시켜야합니다. 결국 나는 "Mr. John A. Doe"로 끝납니다. 중간 이름에 값이있는 것처럼 우선 순위를 지정하기 만하면됩니다. 그런 다음 그 중 하나를 사용하십시오. 나는 여전히 정보를 잃을 지 모르지만 위의 예에서와 같이 여러 가지 사기극이 있다는 것은 내 특정 데이터 세트에서는 드물다. 대개 중간 이름이없는 것은 하나,없는 경우는 하나입니다. 그것이 내가이 도움이 될 수 있음 비주얼 스튜디오 2013

+2

무엇 집계 작업을 사용하는 방법에 대해? 처음과 마지막에 그룹, MAX 접두사/중간/접미어 – billinkc

+1

아니요, ID가 없습니다. 실제로는 이전 테이블의 여러 이름으로 구성된 varchar 필드로 새 스키마의 상위 레코드에 외래 키가있는 개별 레코드로 이동합니다. 병합의 자격은 처음 성과 이름이 일치하면 간단합니다. 일반적으로 그 상태는 좋지 않을 수도 있지만 데이터 세트를 살펴 보았고 진정한 속지가 아닌 속은 없습니다. –

+0

@billinkc : 그건 좋은 제안이고 내 "플랜 B"를 만족 시키거나 다른 하나가없는 경우 중간 이름을 사용하는 것입니다. 그래도 레코드를 병합하는 것이 더 좋은 옵션이라고 생각합니다. 답변으로 의견을 추가하면 적어도 업보트를 줄 수 있으며 첫 번째 선택을 얻을 수 없다면 결국 받아 들일 것입니다. –

답변

3
select max(Prefix), FirstName, max(MiddleName), LastName, max(Suffix) 
    from table 
group by LastName, FirstName 
order by LastName, FirstName 
1

에 SSDT-BI에서 일하고 있어요 가치가 무엇인지에 대한

.

DECLARE @TAB TABLE 
    (EMPLOYEEID INT, 
    PREFIX VARCHAR(50) , 
    FIRSTNAME VARCHAR(50) , 
    MIDDLENAME VARCHAR(50) , 
    LASTNAME VARCHAR(50) , 
    SUFFIX VARCHAR(50)) 
INSERT INTO @TAB VALUES 
    (107,'','JOHN','','DOE',''), 
    (107,'MR. ','JOHN','','DOE',''), 
    (107,'','JOHN','A.','DOE',''), 
    (112,'','JOE','','FRANK',''), 
    (112,'','JOEL','','FRANK','') 
---------------------------------------- 
SELECT * FROM @TAB 

enter image description here

--To bring a Key, I added an EmployeeID. 

SELECT EMPLOYEEID, 
     MAX(PREFIX) PREFIX, 
     MAX(FIRSTNAME) FIRSTNAME, 
     MAX(MIDDLENAME) MIDDLENAME, 
     MAX(LASTNAME) LASTNAME, 
     MAX(SUFFIX) SUFFIX 
FROM @TAB 
GROUP BY EMPLOYEEID 

결과

enter image description here