3257_ko-KR
행의 평등 비교같은 열 형식이지만 행 수는 다른 두 개의 데이터 표가 있습니다. 일부 열 유형은 문자열이고 다른 유형은 정수입니다.
table_1을 한 번에 한 행씩 이동하고 table_2에 동일한 행이 있는지 (행의 열 요소를 기반으로) 볼 수있는 스크립트를 작성하려고합니다.
요소별로 평등 열 요소를 비교해야합니까, 아니면 전체 행을 빠르게 비교할 수 있습니까? 차이가 있다면 어떤 table_2 행이 동일한 지 알 필요가 없습니다. 동일한 값을 가진 행만 있는지 알아야합니다.
감사,
계산서Re: 행의 동일성 비교테이블 A의 모든 행과 테이블 B의 모든 행에 대해 이중 루프를 실행하지 않으려면 각 행에 열을 하나씩 추가하여 해당 행이 어느 테이블에서 왔는지(즉, 'A' 또는 'B') 표시하고 두 테이블을 단일 테이블로 연결한 다음 값 범위가 가장 큰 하나 또는 두 개의 열을 기준으로 결합된 테이블을 정렬할 수 있습니다. 그런 다음 결합된 테이블을 행별로 실행하여 각 행과 해당 하나 또는 두 열에 동일한 값이 있는 앞의 행 사이에 일치하는 항목이 있는지 찾습니다. 어디에서나 일치하는 항목이 있지만 해당 행의 추가 열에 한 위치에 'A'가 있고 다른 위치에 'B'가 있는 경우(그리고 그런 경우에만) 다른 모든 열도 항목별로 비교합니다. 그런 다음 이중 루프로 전체를 수행해야 하는 것과 달리 단일 패스로 테이블을 검색하면 됩니다(거의 동일한 여러 행을 찾은 경우 몇 번의 추가 비교 포함).
한 번의 명령문으로 두 테이블의 전체 행을 비교할 수 있는 방법이 있는지 모르겠지만, 적어도 위의 방법을 사용하면 비교적 큰 테이블을 다루는 경우 작업 속도가 약간 빨라질 것입니다.제목: 행 간 동일성 비교고마워요, 데이비드.
덕분에 저도 비슷한 접근 방식을 생각해 봤습니다. 한 테이블에서는 각 행의 모든 요소를 포함하는 문자열을 만들고, 그 문자열을 리스트에 넣었습니다. 마찬가지로 두 번째 테이블에서도 각 행에 대해 문자열을 만들고, 그 문자열이 리스트에 포함되어 있는지 확인했습니다.
dtOld = 데이터 테이블("oldDelta");
dtNew = 데이터 테이블("델타");
nr = N 행(dtOld);
nc = N Cols( dtOld );
oldList = {};
For( j = 1, j <= nr, j++,
oldString = "";
For( k = 1, k <= nc, k++,
oldString = oldString || Char( Column( dtOld, k ) )
);
( oldList, oldString )에 삽입
);
nr = N 행(dtNew);
For( j = 1, j <= nr, j++,
newString = "";
For( k = 1, k <= nc, k++,
newString = newString || Char( Column( dtNew, k ) )
);
만약 ( oldList, newString을 포함하는 경우 ),
프린트(j)
);
);
메시지는 Bill E 님이 수정했습니다.제목: 행 간 동일성 비교두 테이블을 조인하여 새 테이블을 만드는 방법도 있습니다. "WHERE" 절은 다음과 같습니다.
col1A = col1B
그리고 col2A = col2B
그리고 col3A = col3B
등.
결과적으로 중복된 항목들이 표에 표시될 것입니다. 하지만 열이 많으면 상당히 번거로운 작업이 될 수 있습니다.