Текущий архив: 2006.02.12;
Скачать: CL | DM;
ВнизСделать выборку пропущенных номеров из БД на SQL Найти похожие ветки
← →
Radix (2006-01-26 08:36) [0]В общем имеется таблица, где в одном из полей (num) хранится последовательность чисел (неких номеров) 1,2,3,4,6,7,10,11,... Среди них могут быть пропущенные (как в примере). Можно ли на sql (Firebird) сделать выборку пропущенных номеров (по примеру - 5,8,9...) ???
← →
ЮЮ © (2006-01-26 08:42) [1]Если устроит 5, 8 (без 9), то
SELET t0.ID + 1 FROM
table t0
LEFT JOIN t1 ON (t0.ID + 1) = t1.Id
WHERE t1.ID IS NULL
← →
Radix (2006-01-26 08:44) [2]Спасибо ЮЮ! Сейчас попробую!
← →
Digitman © (2006-01-26 10:32) [3]create procedure MissingNumbers
returns (ANumber INTEGER)
AS
declare variable TempNumber INTEGER;
begin
ANumber = 0;
for
select NumField
from SomeTable
order by NumField
into :TempNumber
do begin
ANumber = ANumber + 1;
while (ANumber < TempNumber) do
begin
suspend;
ANumber = ANumber + 1;
end;
end;
end;
..
SELECT * FROM MissingNumbers
← →
Johnmen © (2006-01-26 10:52) [4]Классический пример :)
SELECT T1.ID+1, MIN(T2.ID)-1, MIN(T2.ID)-T1.ID-1
FROM TABLE T1
JOIN TABLE T2 ON T1.ID<T2.ID
GROUP BY T1.ID
HAVING MIN(T2.ID)-T1.ID>1
Получаем промежутки в которых отсутствует ID.
В первой колонке будет начальный ID промежутка, во второй - конечный.
В третьей количество отсутствующих ID в промежутке.
Страницы: 1 вся ветка
Текущий архив: 2006.02.12;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.04 c