oracle – 如何在使用GROUP BY CLAUSE的SQL查询中插入if else梯
发布时间:2021-01-08 09:33:59 所属栏目:站长百科 来源:网络整理
导读:我正在使用ORACLE db,我正在尝试为以下要求创建SQL查询. 以下是我的快照: ID STATUS---------- 1 WORKING 1 QUEUING 1 SLEEPING 2 FAILED 2 SLEEPING 2 SLEEPING 3 QUEUING 3 IDLE 预期产量: 1 WORKING 2 FAILED 3 QUEUING 状态可以是WORKING,QUEUING,FAIL
我正在使用ORACLE db,我正在尝试为以下要求创建SQL查询. 以下是我的快照: ID STATUS ---------- 1 WORKING 1 QUEUING 1 SLEEPING 2 FAILED 2 SLEEPING 2 SLEEPING 3 QUEUING 3 IDLE 预期产量: 1 WORKING 2 FAILED 3 QUEUING 状态可以是WORKING,QUEUING,FAILED,SLEEPING 我想在SQL查询中插入以下条件,这些条件在首选项顺序中列出: >如果组中的任何条目包含’WORKING’,我想设置final 解决方法与子查询结合使用的数据透视查询应该可以为您提供所需内容:SELECT t.ID,CASE WHEN t.Working > 0 THEN 'WORKING' WHEN t.Failed > 0 THEN 'FAILED' WHEN t.Queuing > 0 THEN 'QUEUING' ELSE 'IDLE' END AS STATUS FROM ( SELECT ID,SUM(CASE WHEN STATUS = 'WORKING' THEN 1 ELSE 0 END) AS Working,SUM(CASE WHEN STATUS = 'FAILED' THEN 1 ELSE 0 END) AS Failed,SUM(CASE WHEN STATUS = 'QUEUING' THEN 1 ELSE 0 END) AS Queuing FROM yourTable GROUP BY ID ) t 外部CASE表达式正确表示首选项的原因是因为Oracle总是执行short circuit evaluation.这意味着如果查询遇到与WORKING匹配的ID,则不会执行其他两个检查(类似的逻辑适用于每个状态). (编辑:通辽站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |