문제

ID 마커로 임의의 부동 숫자를 생성하는 저장 프로 시저가 있으며 호출되는 즉시 난수 + .1을 기록 / 로깅 테이블에 저장하고 최종 결과는 동일한 난수 +.2 (시퀀서 / 분류기)

저장 프로 시저가 항상 올바르게 처리되었는지 쉽게 확인하기 위해 이러한 시퀀스 번호 (아래 예 참조)로 채워진 열을 동적으로 쿼리하고 짝수 (쌍)가 있는지 확인하는 쉬운 방법이 있습니까? ? 라코 디스

위의 샘플 데이터에서 내 저장 프로 시저가 호출 결과와 함께 두 번째 항목을 기록 할 때 항상 있어야하는 두 번째 부분 (5455.2)이 없기 때문에 5455.1의 존재를 알리는 쿼리를 원합니다. (성공 또는 실패).

물론, 문제 / 이상한 존재가 있음을 알려주는 것뿐만 아니라 (테이블에서 숫자가 짝수인지 확인할 수 있기 때문에) 파트너가없는 것을 찾기 위해 10,000 줄의 기록 / 로그를 정렬하지 않도록 불일치를 선택합니다.

도움이 되었습니까?

해결책

먼저, ID- 키는 하나의 열이 아니고 두 개 여야합니다.즉, 대신 라코 디스

다음과 같은 것이 있어야합니다. 라코 디스

그런 다음 추가로 찾고있는 특정 이상이 {Phase= 1)의 ID이지만 해당하는 {Phase= 2}가 없다고 가정하면이 한 가지 방법으로 쿼리를 작성합니다. 라코 디스

다른 팁

여기 길이 죄송하지만 다음 사람에게 도움이되기를 바랍니다 ...

위에서 제안한대로 무작위 ID를 두 개의 필드로 분할합니다. 첫 번째는 무작위 ID가있는 필드이고 두 번째는 "단계"ID가있는 필드입니다. 위의 except 문을 사용하면 시작되었지만 (1 단계 존재) 두 번째 / 완료 단계가 누락 된 임의의 ID 목록이 반환됩니다.

그러나 각 RID를 개별적으로 조회하는 데 시간을 소비하고 싶지 않기 때문에 EXCEPT 문을 IN 문에 다음과 같이 래핑했습니다. 이를 통해 실제로 반환되는 필드를 제어 할 수 있습니다. 라코 디스

참고 : 내가 한 것처럼 EXCEPT 문을 래핑하면 모두 선택하도록 지정했기 때문에 구별 부분 (아래 링크 참조)이 무시됩니다. 또한 중복을 방지하기 위해 난수 범위를 개선하거나 날짜 코드를 추가해야합니다. 동일한 난수를 두 번 얻은 적이 있고 하나가 완료되고 하나가 실패하면 실패한 (2 단계가 없었 음) 하나가 일치하는 완료 단계의 존재로 EXCEPT 문 쿼리 결과에 표시되지 않습니다. EXCEPT 절을 충족합니다. 모든 시작 단계에 대해 완료 단계가 있는지 확인하는 것이 아니라 일치하는 임의의 ID를 가진 완료 단계가 전혀 존재하는지 확인하는 것이 아닙니다.

난수 체계가 잘못되어 중복이 발생하는 경우 동일한 임의 ID를 가진 테이블에 16 개의 항목이있을 수 있습니다 (임의 ID가 1337이라고 가정 해 보겠습니다). RID가 1337 인 항목의 짝수는 단순히 오류가 짝수 인 경우에도 괜찮아 보일 것입니다 (데이터베이스의 항목 수를 확인하는 것은 실제로 오류를 확인하는 좋은 방법이 아닙니다. 비록 내가 1 인 단계 ID의 수를 세고 내 쿼리의 결과를 확인하기 위해 pid가 2 인 단계 ID의 수와 비교할 수 있지만). 16 개 항목 중 6 개가 제대로 완료되고 (1 단계 및 2 단계) 나머지 4 개는 어떻게 든 실패했다고 가정 해 보겠습니다. PID가 2 인 RID 1337에 대한 데이터베이스 항목이 존재했기 때문에 4 개의 오류 중 어느 것도 표시되지 않습니다.

올바른 방향으로 안내해 주셔서 감사합니다, Barry!

=============================================================================================================================================================================================================================================================================================================

다음 링크는 이전 사이트 임에도 불구하고 다른 사이트보다 EXCEPT 연산자 예제에 대해 좀 더 깊이있는 것 같습니다 (모든 결과가 아닌 별개의 결과 만 반환되는 상태).

http : //www.databasejournal.com/features/mssql/article.php/3602601/Except-Operator-in-SQL-Server-2005.htm

=============================================================================================================================================================================================================================================================================================================

Pinal Dave의 일반 운영자 요약 : <인용구>

JR 중 하나입니다. 개발자가 하루 전에 저에게 물었습니다. SQL Server는 Oracle의 MINUS 절과 유사한 작업을 수행합니까?

물론, SQL Server의 EXCEPT 절은 Oracle의 MINUS 연산과 정확히 유사합니다. EXCEPT 쿼리 및 MINUS 쿼리는 두 번째 쿼리에서 반환되지 않은 첫 번째 쿼리의 모든 행을 반환합니다. EXCEPT 쿼리 및 MINUS 쿼리 내의 각 SQL 문에는 데이터 유형이 유사한 결과 집합에 동일한 수의 필드가 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top