我有一個具有運行狀態的流程引擎1,2,3,4,5,6的表。當其中一個引擎停機時,記錄將從表中刪除。使用case語句,我可以顯示停機的第一個引擎,但是如果有兩個或更多個引擎停機,我該如何去顯示引擎。對於例如如何使這個查詢顯示PE 2 IS DOWN,並且如果兩個引擎都關閉,PE 4將DOWN。現在它只顯示列表中第一個關閉的引擎。SQL CASE對無數據的聲明
SELECT CASE
WHEN (SELECT COUNT(PE_ID) FROM CWVMINFO WHERE PE_ID = 1) = 0 THEN 'PE 1 IS DOWN'
WHEN (SELECT COUNT(PE_ID) FROM CWVMINFO WHERE PE_ID = 2) = 0 THEN 'PE 2 IS DOWN'
WHEN (SELECT COUNT(PE_ID) FROM CWVMINFO WHERE PE_ID = 3) = 0 THEN 'PE 3 IS DOWN'
WHEN (SELECT COUNT(PE_ID) FROM CWVMINFO WHERE PE_ID = 4) = 0 THEN 'PE 4 IS DOWN'
WHEN (SELECT COUNT(PE_ID) FROM CWVMINFO WHERE PE_ID = 5) = 0 THEN 'PE 5 IS DOWN'
WHEN (SELECT COUNT(PE_ID) FROM CWVMINFO WHERE PE_ID = 6) = 0 THEN 'PE 6 IS DOWN'
ELSE 'ALL PROCESS ENGINES ARE UP AND RUNNING'
END "STATUS"
from dual;
你正在使用什麼數據庫?根據數據庫可以製作更好的目標腳本。 – ps2goat 2015-02-10 22:16:45
@ ps2goat'dual'通常是oracle – 2015-02-10 22:20:01
我使用的是ORACLE 11.2.0 – ram81012 2015-02-10 22:20:38