我有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