跳至內容
Astera Technology

仍未處理完的例外個案,哪些已拖得最久?

先按最新狀態找出仍開啟的個案,再計開案至截數時的日數。

先訂清楚要判斷甚麼,再準備資料

個案可能關閉後再開,不能只因曾有「open」紀錄便當作仍待處理。按時間及固定事件編號挑最新狀態。這份表由首次開案起計,連已關閉的時間也包括;若要計本次重開後等待,起點便不同。

以下全部是假設資料。請在新的 SQLite 測試資料庫建立各表,再執行唯讀查詢。數量以件計,金額以港元的分作整數儲存;顯示港元時除以 100。

假設輸入節錄;完整相關資料見下方 SQL
編號開案時間負責人編號
E12026-10-01 09:00S1
E22026-10-08 12:00NULL(未知或沒有資料)
E32026-09-01 09:00S2
下載可編輯 CSV ↓
可直接執行的完整假設資料(SQLite)
CREATE TABLE cases(id TEXT PRIMARY KEY, opened_at TEXT, owner_id TEXT);
CREATE TABLE case_events(id INTEGER PRIMARY KEY, case_id TEXT, occurred_at TEXT, status TEXT);
INSERT INTO cases VALUES ('E1','2026-10-01 09:00','S1'),('E2','2026-10-08 12:00',NULL),('E3','2026-09-01 09:00','S2');
INSERT INTO case_events VALUES (1,'E1','2026-10-01 09:00','open'),(2,'E1','2026-10-05 09:00','closed'),(3,'E1','2026-10-09 09:00','open'),(4,'E2','2026-10-08 12:00','open'),(5,'E3','2026-09-01 09:00','open'),(6,'E3','2026-10-02 09:00','closed');

執行查詢,核對實際結果

SQLite 唯讀查詢
WITH latest AS (
 SELECT *,ROW_NUMBER() OVER (PARTITION BY case_id ORDER BY occurred_at DESC,id DESC) AS rn
 FROM case_events WHERE occurred_at<='2026-10-10 12:00'
)
SELECT c.id,c.owner_id,
 CAST(julianday('2026-10-10 12:00')-julianday(c.opened_at) AS INTEGER) AS calendar_days
FROM cases c JOIN latest e ON e.case_id=c.id AND e.rn=1
WHERE e.status='open' ORDER BY calendar_days DESC,c.id;
以上 SQLite 假設資料的查詢結果
編號負責人編號完整曆日
E1S19
E2NULL(未知或沒有資料)2
下載可編輯 CSV ↓

E1 現時仍開啟,已過 9 個完整曆日;E2 已過 2 日,而且未有人負責。E3 雖然更早開案,但已關閉,所以不列入。先查看 E1 的處理歷史,並為 E2 分配負責人,再按工作規則跟進。

按資料範圍使用結果

截數時間固定為 2026 年 10 月 10 日中午 12 時,之後的事件不計入。取完整日數不等於工作時數 SLA。若升級處理取決於假期或暫停,亦要訂明時區及停鐘規則。

本例的建表、資料及結果已在 SQLite 執行。套用時先在系統測試副本調整欄位及狀態規則,再與流程負責人核對預期結果。其他資料庫平台未經測試。

相關資源