先訂清楚要判斷甚麼,再準備資料
連接員工時只接受在職紀錄,客戶則只看有效帳戶。這樣仍會留下負責人已停用的客戶,不會因條件放錯位置而消失。未分配和分配失效要分開標示,兩者所需處理不同。
以下全部是假設資料。請在新的 SQLite 測試資料庫建立各表,再執行唯讀查詢。數量以件計,金額以港元的分作整數儲存;顯示港元時除以 100。
| 編號 | 原電郵 | 負責人編號 | 有效(1=是) |
|---|---|---|---|
| C1 | Alex@example.test | S1 | 1 |
| C2 | alex@EXAMPLE.test | S1 | 1 |
| C3 | NULL(未知或沒有資料) | NULL(未知或沒有資料) | 1 |
| C4 | bee@example.test | S2 | 1 |
| C5 | old@example.test | S2 | 0 |
CREATE TABLE customer_accounts(id TEXT PRIMARY KEY, email TEXT, owner_id TEXT, active INTEGER);
CREATE TABLE staff(id TEXT PRIMARY KEY, active INTEGER);
INSERT INTO staff VALUES ('S1',1),('S2',0);
INSERT INTO customer_accounts VALUES ('C1',' Alex@example.test ','S1',1),('C2','alex@EXAMPLE.test','S1',1),('C3',NULL,NULL,1),('C4','bee@example.test','S2',1),('C5','old@example.test','S2',0);執行查詢,核對實際結果
SELECT c.id,c.owner_id,
CASE WHEN c.owner_id IS NULL THEN 'unassigned' ELSE 'inactive_or_missing' END AS issue
FROM customer_accounts c LEFT JOIN staff s ON s.id=c.owner_id AND s.active=1
WHERE c.active=1 AND s.id IS NULL ORDER BY c.id;| 編號 | 負責人編號 | 問題代碼 |
|---|---|---|
| C3 | NULL(未知或沒有資料) | unassigned |
| C4 | S2 | inactive_or_missing |
C3 未分配,須決定由誰接手;C4 的 S2 已停用,須重新分配;C5 本身停用,所以不在清單。交接時先確認接手同事,並按已授權範圍轉交工作。
按資料範圍使用結果
此表只查有沒有人負責,未評估工作量、是否當值或資料權限。若有團隊、多位負責人或臨時代理,須先訂責任規則,再用合適的關聯表。
本例的建表、資料及結果已在 SQLite 執行。套用時先在系統測試副本調整欄位及狀態規則,再與流程負責人核對預期結果。其他資料庫平台未經測試。