我正在尝试监视仪表板上的队列。 我希望我的选择即使队列表为空也能返回一些内容,看看我当前的 qry。
SELECT 'QueueName' Q_NAME,
CASE
WHEN COUNT(*) = 0
THEN (SELECT 'Nothing to process Queue is empty' FROM DUAL)
ELSE 'something in the Queue'
END Q_STATUS,
CASE
WHEN MSG_STATE = 'READY' AND MIN(ENQ_TIME) > SYSDATE - 5/(24*60)
THEN 'OK: processing'
ELSE 'Nothing to process on Queue'
END STATUS
FROM QueueTable
GROUP BY MSG_STATE;
如果要在表为空时返回一行,则可以使用
UNION ALL
添加另一行(如果为空,则使用默认值),然后按优先级对行进行排序,队列的详细信息具有比默认值更高的优先级,并且仅输出最高优先级的行:
SELECT
FROM (
SELECT 'QueueName' AS Q_NAME,
CASE
WHEN COUNT(*) = 0
THEN 'Nothing to process Queue is empty'
ELSE 'something in the Queue'
END AS Q_STATUS,
CASE
WHEN MSG_STATE = 'READY' AND MIN(ENQ_TIME) > SYSDATE - 5/(24*60)
THEN 'OK: processing'
ELSE 'Nothing to process on Queue'
END AS STATUS,
1 AS priority
FROM QueueTable
GROUP BY MSG_STATE
UNION ALL
SELECT 'QueueName',
'Nothing to process Queue is empty',
'Nothing to process on Queue',
2
FROM DUAL
)
ORDER BY priority
FETCH FIRST ROW WITH TIES;