SQL Server에서 루프를 줄이려고하고 있는데, 어처구니가 없습니다. 구매 기준을 쌍으로 맞추고 주어진 기준에 따라 판매해야합니다. 그 기준으로, 구매 그룹은 판매 그룹과 일치 할 수 있습니다. 모든 구매가 매매와 매치 할 수있는 것은 아니지만 매매가 하나 이상일 경우 매수가 매도 할 수 있습니다. 모든 가능한 경기의 임시 테이블을 쉽게 얻을 수 있지만 단 한 번의 구매를 한 번만 한 번씩 한 번만 수행하면됩니다.일치하는 레코드에서 루프 피하기
어떤 식 으로든 반복하는 것은 피할 수없는 것처럼 보일지라도 레코드의 양 때문에 커서를 사용하지 않을 것입니다. 한 번에 한 세트의 기준을 찾아보고 싶습니다 (예 : 각 항목의 첫 번째 쌍을 가져옴). 가능한 표의 임시 테이블 #T를 사용하려고합니다. 쌍으로 범위를 좁히고 반복합니다. 최소한 나는 100 만회 대신 100 회 반복한다. 나는 계속 중 MatchIDs 1, 4, 2, 3. 나는 그것을 좁힐이 알고리즘을 사용하려고 한 수 위의 경우
MatchID BuyID SellID
1 91 59
2 91 60
3 97 59
4 97 60
: 여기
는 임시 테이블 #T의 조각입니다- A A 큰 MatchID에 기록하지만, 같은 SellID을 삭제하려면 더 큰 MatchID에 기록하지만, 같은 BuyID
- 삭제
이 경우 단계 (1)은 레코드 2와 4를 삭제하고 단계 (2)는 레코드 3을 삭제합니다. SQL의 레코드를 재정렬하여 쌍이 다른 MatchID를 가질 수는 있지만, SQL Server에서 할 수 있습니다. 나는 여러 가지 방법으로 성냥을 주문하려했지만, 알고리즘을 적용 할 수있는 어떤 것도주지 못했다.
다른 누구에게도 이와 같은 문제가 있었습니까?
이 경우 일치해야 할 내용 : (1,2,3), (2,2,4), (3,3,5)? –
데이터가 실제로 얻는 것만 큼 복잡합니까? 또는 BuyID = 98에 대해 5 개의'BuyID' 행이 있고 BuyID = 99에 대해 3 개의'BuyID' 행만있을 수 있습니까? 당신은 그들 모두가 서로 일치하지 않을 것이라고 말합니다. 그래서 98의'BuyID'도 59와 60의'SellID' 값과 만 일치 할 수 있습니까? 이 경우 59 및 60은 이미 91 및 97의 BuyID 값에 사용되었으므로 어떻게해야합니까? –
데이터가 실제로 더 복잡해 지지만 질문이 너무 혼란스러워지는 것을 원치 않습니다. 구매 ID 91은 SellID 59 또는 60과 일치 할 수 있고 BuyID 97과 동일 할 수 있다고 가정하십시오. 그러나 한 번에 하나의 BuyID 만 일치시킬 수 있으므로 너무 많지 않고 중복 된 항목을 버려야합니다. 루프를 통과합니다. –