[SQL SERVER]找出連續或缺少資料
我在開發WorkFlow Engine必須要自動判斷該關卡審核人最近關卡,
這時我就需要判斷該審核人關卡是否有缺少資料,
下面記錄一下如何找出連續或缺少資料。
假設目前WorkFlow Engine 必須要判斷審核人A最近關卡
先找出審核人A在該FLOW項目中所有關卡資料
可知道關卡4是別的審核人,當申請人送出表單後,
WorkFlow Engine 應該自動指定到關卡3(最近)並產生相關Flow資料。
--連續資料
SELECT MIN(stage) AS StartRange, MAX(stage) AS EndRange
FROM
(
SELECT stage, stage - ROW_NUMBER() OVER(ORDER BY stage) AS gap
FROM ##flowmpty where name='A'
) D
GROUP BY gap;
--缺少資料(我利用一個資料表值變數)
declare @a table (stage int)
declare @i int,@total int
select @total=max(stage) from ##flowmpty where name='A'
select @i = 0
while @i < (@total)
begin
set @i = @i + 1
if not exists (select * from ##flowmpty where name='A' and stage = @i)
insert @a select @i
end
select * from @a
由於找到該審核人缺少關卡資料,所以我就可以動態產生關卡3相關Flow資料