[SQL SERVER]找出連續或缺少資料

[SQL SERVER]找出連續或缺少資料

我在開發WorkFlow Engine必須要自動判斷該關卡審核人最近關卡,

這時我就需要判斷該審核人關卡是否有缺少資料,

下面記錄一下如何找出連續或缺少資料。

 

假設目前WorkFlow Engine 必須要判斷審核人A最近關卡

先找出審核人A在該FLOW項目中所有關卡資料

image

可知道關卡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;

image

 

 

 

--缺少資料(我利用一個資料表值變數)

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

image

 

由於找到該審核人缺少關卡資料,所以我就可以動態產生關卡3相關Flow資料

image