跳至內容
Astera Technology

已停用緊急項目為何通過活躍工作篩選?

先把緊急或逾期條件分組,再套共同的活躍要求。

下載完整個案資料及參考答案 ↓

準備報表輸入

本例要活躍,而且緊急或逾期至少其中一項。AND 優先於 OR,未分組便只有逾期分支要活躍。用括號列清本例範圍。

以下記錄及報表規則均為原創假設。在新 SQLite 測試資料庫重做建表,預覽包含此小型例子每張表。

假設輸入:work
編號緊急旗標逾期旗標活躍旗標
A100
B011
C001
下載可編輯 CSV ↓
完整建表及插入假設資料
CREATE TABLE work(id TEXT PRIMARY KEY,urgent INTEGER CHECK(urgent IN(0,1)),overdue INTEGER CHECK(overdue IN(0,1)),active INTEGER CHECK(active IN(0,1))); INSERT INTO work VALUES('A',1,0,0),('B',0,1,1),('C',0,0,1);

比較錯誤及更正結果

錯誤 SELECT:重現問題
SELECT id FROM work WHERE urgent=1 OR overdue=1 AND active=1 ORDER BY id;
錯誤查詢的逐行結果
編號
A
B
下載可編輯 CSV ↓
更正 SELECT
SELECT id FROM work WHERE (urgent=1 OR overdue=1) AND active=1 ORDER BY id;
更正查詢的逐行結果
編號
B
下載可編輯 CSV ↓

A 緊急但停用,要剔除;B 活躍且逾期,要保留。只改條件分組,不改原旗標。

用新副本測邊界

加活躍緊急 D,符合緊急分支,也符合共同活躍條件。

另開新資料庫重做原建表,才套下列改動及更正查詢。空結果在表內用已標明空結果文字表示,不是假資料行。

邊界改動及更正查詢
INSERT INTO work VALUES('D',1,0,1);
SELECT id FROM work WHERE (urgent=1 OR overdue=1) AND active=1 ORDER BY id;
邊界查詢的逐行結果
編號
B
D
下載可編輯 CSV ↓

為何 A 不合、D 合?

查看參考答案

兩者緊急,只有 D 活躍;共同活躍要求令 A 剔除。

相關資源