я есть таблица идентификаторов и позицииКак найти отсутствующее значение в последовательности внутри групп в 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
Максимальное количество позиций ... полная таблица, над которой я работаю, содержит около 12 тыс. Идентификационных записей, позиции от 3 до x –
@ Кристофер, что-то не так с моим решением? –