我有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 2009-04-07 20:19:58
沒有職位的最大數目...我正在處理的全表包含大約12k ID記錄,職位從3到x – 2009-04-07 20:30:38
@Christopher,我的解決方案有什麼問題嗎? – 2009-04-07 20:34:47