尝试使用query2替换query1,但似乎无效。有没有办法让query1变得简单?当WHERE子句很长时,query1将有许多冗余语句。
查询1:
SELECT "RUNNING", COUNT(*) FROM devices WHERE status_id & 1 UNION SELECT "MISSING", COUNT(*) FROM devices WHERE status_id & 2 UNION SELECT "ERROR", COUNT(*) FROM devices WHERE status_id & 4 UNION SELECT "WARNING", COUNT(*) FROM devices WHERE status_id & 8 UNION SELECT "FAILED", COUNT(*) FROM devices WHERE status_id & 16 UNION SELECT "RESTARTING", COUNT(*) FROM devices WHERE status_id & 32 UNION SELECT "OFF", COUNT(*) FROM devices WHERE status_id & 64 UNION SELECT "LOW", COUNT(*) FROM devices WHERE status_id & 128 UNION SELECT "RETIRED", COUNT(*) FROM devices WHERE status_id & 256 UNION SELECT "UNKNOWN", COUNT(*) FROM devices WHERE status_id & 512;
QUERY2:
SELECT (CASE WHEN (status_id & 1) THEN "RUNNING" WHEN (status_id & 2) THEN "MISSING" WHEN (status_id & 4) THEN "ERROR" WHEN (status_id & 8) THEN "WARNING" WHEN (status_id & 16) THEN "FAILED" WHEN (status_id & 32) THEN "RESTARTING" WHEN (status_id & 64) THEN "OFF" WHEN (status_id & 128) THEN "LOW" WHEN (status_id & 256) THEN "RETIRED" WHEN (status_id & 512) THEN "UNKNOWN" END ) AS DS, COUNT(*) FROM devices GROUP BY DS;