나는 ID의 테이블을 가지고 배치SQL의 그룹 내에서 누락 된 값을 찾는 방법은 무엇입니까?
CREATE TABLE #MissingSequence (ID INT NOT NULL, Position INT NOT NULL)
INSERT INTO #MissingSequence (ID,Position)
SELECT 36,1
UNION ALL SELECT 36,2
UNION ALL SELECT 36,3
UNION ALL SELECT 36,4
UNION ALL SELECT 36,5
UNION ALL SELECT 36,6
UNION ALL SELECT 44,1
UNION ALL SELECT 44,3
UNION ALL SELECT 44,4
UNION ALL SELECT 44,5
UNION ALL SELECT 44,6
내가 찾으려고 노력하고이 경우 ID에 의한 위치 순서에있는 휴식 44,1와 44,3
사이의 틈이있는 경우입니다SELECT l.ID
,Start_Position = MIN(l.Position) + 1
,Stop_Position = MIN(fr.Position) - 1
FROM #MissingSequence l
LEFT JOIN #MissingSequence r
ON l.Position = r.Position - 1
LEFT JOIN #MissingSequence fr
ON l.Position < fr.Position
WHERE r.Position IS NULL
AND fr.Position IS NOT NULL
GROUP BY l.ID
을하지만, 여러 ID 값이있는 경우 작동하지 않습니다 :
나는 함께 분석 관리했습니다. 하나의 ID, 44 만 있으면 작동합니다.
생각, 의견, 제안?
감사합니다.
무엇 출력 당신이 좋아하는 것이 보다? 최대 허용 게재 순위 값이 있습니까? – tpdi
최대 위치 수 없음 ... 12K ID 레코드, 위치는 3 ~ x –
인 @Christopher에 대한 약 12k ID 레코드가 포함 된 전체 테이블에 내 솔루션에 문제가 있습니까? –