Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.027 c
3-1134202926
axx
2005-12-10 11:22
2006.02.12
SQL cинтаксис FB.


2-1137861040
JEK2
2006-01-21 19:30
2006.02.12
Настройки программы в файле как?


1-1137163081
yarvu
2006-01-13 17:38
2006.02.12
Зоздание объекта в др.приложении.


6-1130580983
vishnia
2005-10-29 14:16
2006.02.12
Связь с БД MySQL из Интернет-приложения


15-1138046238
Anatolyj
2006-01-23 22:57
2006.02.12
вывод отчета из delphi




   Наверх