2010-07-20 5 views
0

나는 다음과 같은 샘플 데이터가있는 테이블이 고유하게 될 수 있습니다.줄이고 병합 중복 행

표는 내가 지금까지 구별 중복에 ROW_NUMBER를 사용하여 새 열을 만드는 등 가지고 있지만, 다음에 무엇을 모른다 :

rownumber Name Color 

1   Alice Green 
1   Bob  Black 
1   Chris Green 
2   Chris Black  
1   David Red 
1   Peter Blue 
1   Simon Blue 
2   Simon Red 
3   Simon Green 
+1

왜 데이터베이스를 비정규 화 하시겠습니까? 정규화 된 테이블은 일반적으로 좋은 것으로 간주됩니다. – Oded

+0

흠 ... 위의 "테이블"은 실제로 많은 뷰를 조인하는 쿼리 결과이므로 권한을 부여 받으면 완전한 점검을하고 있기 때문입니다. DB 세계에서 정규화를 지적 해 주셔서 고맙습니다. 필자는 본질적으로 DB 프로그래머가 아니므로 당황스럽게 말하는 SQL이 좋지 않습니다. – Chris

답변

0

전에서 (해킹)을 작동하도록 설정 임시 결과를 저장하기 위해 테이블 ​​변수로 접근 here

을 채택했다.

정렬 기준 :

1

이 작업을 수행하지 마십시오, 기본 키가 없습니다. 대신에 테이블을 예를 들어 Person, Preference 및 Color 테이블 (Preference가 관계의 올바른 이름 인 경우 Person 및 Color에 대한 외래 키가있는 경우). 이 방법을 사용하면 불일치의 위험을 피할 수 있습니다 (원하는 경우 Person 이름을 고유하게 만들 수 있지만 이어야 함).

EDITED : 조인 쿼리에서이 값을 얻는다면 데이터가 합리적으로 일치한다고 가정하므로 정규화는 문제가되지 않습니다. 이름에 GROUP으로 결합 쿼리를 변경할 수 있습니까? 결과 세트를 해킹하는 것보다 훨씬 더 깨끗합니다.

+0

(좋은 하늘. 나는 실제로 미국식 철자법을 꾸준히 관리했다. ** 이제 그럴 것이 ** 힘을 발휘할 것이다! :-) –

+0

나는 그와 투쟁한다. 그 사람을 잘 했어 :) – Oded

+0

글쎄, 이것이 테이블 변수에 저장된 결과 세트라는 것을 잊어 버렸기 때문에 표준화가 도움이 될지 확실하지 않다. 중복 된 행을 식별하는 방법을 찾은 다음 병합 함수를 사용하여 모든 "색상"문자열을 작성한 다음 새 열에 어떻게 든 놓을 수는 있습니다.하지만 실제로 어떻게해야할지 모르겠습니다. (나는 색상으로 색상을 맞춤법으로 미국인으로 가장하려고했는데 그 말은 내가 말해야 할 자제력이 상당히 필요했다.) 나는 나의 가장이 잘 작동한다고 생각한다. – Chris