【发布时间】:2015-02-10 22:14:55
【问题描述】:
我有一个表,其中的进程引擎 1、2、3、4、5、6 处于运行状态。当其中一个引擎关闭时,记录将从表中删除。使用 case 语句,我可以显示第一个已关闭的引擎,但如果 2 个或更多引擎已关闭,我该如何显示这些引擎。例如如果两个引擎都关闭,我如何让这个查询显示 PE 2 IS DOWN 和 PE 4 is DOWN。现在它只显示列表中第一个关闭的引擎。
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
dual通常是oracle -
我使用的是 ORACLE 11.2.0
-
@Lashane,谢谢,我从来没有在那个级别上使用过 Oracle。我以为他只是为他的桌子命名。
-
最好的起点是创建一个包含流程引擎列表的表。如果您有一个权威的列表开始,编写查询以确定它们的状态会变得更加简单。