ID 값 열 (테이블과 함께 일치 함)이있는 두 개의 테이블과 연결 값이 임의 순서로있는 연결 열이 있습니다. 두 열이 (순서에 관계없이) 정확히 동일한 항목을 포함하고 있는지 확인하고 비교하지 않을 경우 ID를 출력하는지 비교하고 싶습니다.SQL Server : 정렬되지 않은 집합이 동일하게 연결 된 열 비교
예 :
표 1
PersonID Products
1 Apple|Pear|Orange
2 Flour|Apple|Butter
3 Apple
4 Banana|Cashews
5 Juice|Crackers|Banana|Cashews
6 Cashews
2
PersonID Products
1 Orange|Apple|Pear
2 Flour|Apple|Butter
3 Apple|Banana
4 Banana
5 Crackers|Juice|Banana|Cashews
6 Pear|Crackers
난 제품은 표 1과 동일한 세트 (순서)되지 않은 모든 personids 얻을하고자 도표 따라서이 경우에는 사람 3 (추가 제품), 사람 4 (제품 누락) 및 사람 6 (다른 제품)입니다.
현재 주문이 다르게 주문 된 상품을 가지고 있기 때문에 현재 질문에서 사람 1과 5가 잘못 선택되었습니다.
나의 현재 쿼리는 다음과 같다 :
select t1.personid, t1.products as t1products, t2.products as t2products
from table1 t1 (nolock)
inner join table2 t2 (nolock) on t1.personid = t2.personid
where t1.products != t2.products
나는 또한 personid 당 여러 행에 미리 연결 형태로 데이터가 (각 제품 하나를 다시 별도로 두 개의 테이블), 그 경우 더 도움이됩니다 - 알파벳 순서로 연결하는 방법을 찾지 못했기 때문에 그 해결책이이 문제를 해결할 것입니다.
편집 (정화) 는 unconcatenated 데이터는 다음과 같다 :
표 2
PersonID Product
1 Orange
1 Apple
1 Pear
2 Flour
2 Apple
2 Butter
3 Apple
3 Banana
등
표 1
PersonID Product
1 Apple
1 Pear
1 Orange
2 Flour
2 Apple
2 Butter
3 Apple
등
STUFF를 사용하여 PersonID로 연결했습니다.
얼마나 많은 열이 그 길을 갈 것 인 경우 알파벳순으로 할 것을 필요가 있습니까? 몇 개의 열만있는 경우'>'또는'<'연산자를 사용하여 중첩 된'CASE' 문처럼 간단합니다. – ghg565
구조는 제품이 아닌 여러 열로 구성되어 있으므로 작업 ID는 여러 행에서 반복됩니다. 1 ~ 300 개, 가장 일반적으로 각각 약 5-10 개 행이 가능합니다. – user3051065