大家可以試試找出如圖中待簽核的三位員工
因簽核關卡會有斷層(假設遺失),但是下層依然可以出現待簽核.

先給初期資料
drop table if exists #SignOffHistory
create table #SignOffHistory(
HistoryID int --流水號
,MainName nvarchar(50) --簽核主檔
,UserName nvarchar(50) --簽核員工
,Gate int --關卡
,Status int --0 未核 1已核 2不同意
)
insert into #SignOffHistory
values('1','AAA','小白','1','1')
,('2','AAA','小張','2','0')
,('3','AAA','小黃','3','0')
,('4','BBB','小張','1','2')
,('5','BBB','小白','2','0')
,('6','CCC','小白','1','1')
,('7','CCC','小黃','3','0')
,('8','CCC','小黑','4','0')
,('9','DDD','小白','1','1')
,('10','DDD','小菊','2','1')
,('11','DDD','小灰','3','1')
,('12','DDD','曉諭1','5','1')
,('13','DDD','曉諭2','6','1')
,('14','DDD','曉諭3','8','0')
,('15','DDD','曉諭4','9','0')
各位可以試試,也可以用AI解看看
按往例交給AI來作答![]()

















以上AI幫我們寫出最佳SQL,就可以得到你想要的答案了![]()
以下是另外設計的幾個table, 不一定比較好.但是可以作為參考.
-- ===========================
-- 審核流程定義
-- ===========================
CREATE TABLE workflows (
workflow_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name TEXT UNIQUE NOT NULL,
description TEXT
);
CREATE TABLE workflow_steps (
step_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
workflow_id BIGINT NOT NULL REFERENCES workflows(workflow_id),
step_order INTEGER NOT NULL,
role TEXT NOT NULL, -- 負責角色
sla_hours INTEGER NOT NULL, -- 需在幾小時內完成
auto_action TEXT NOT NULL DEFAULT 'escalate' -- 逾時動作
CHECK (auto_action IN ('escalate', 'auto_approve', 'auto_reject')),
UNIQUE (workflow_id, step_order)
);
-- ===========================
-- 提交的內容
-- ===========================
CREATE TABLE submissions (
submission_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
workflow_id BIGINT NOT NULL REFERENCES workflows(workflow_id),
title TEXT NOT NULL,
content TEXT NOT NULL,
submitted_by TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'pending'
CHECK (status IN ('pending', 'in_review', 'approved', 'rejected', 'escalated')),
current_step INTEGER NOT NULL DEFAULT 1,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
-- ===========================
-- 審核記錄(不可竄改)
-- ===========================
CREATE TABLE review_log (
log_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
submission_id BIGINT NOT NULL REFERENCES submissions(submission_id),
step_order INTEGER NOT NULL,
reviewer TEXT, -- NULL 表示系統自動
action TEXT NOT NULL
CHECK (action IN ('approve', 'reject', 'return', 'escalate', 'auto_approve', 'auto_reject')),
comment TEXT,
sla_met BOOLEAN, -- 是否在 SLA 內完成
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);