如果您发布示例数据会很好。由于您没有查看基于 Scott 模式的以下示例。而不是你的status 专栏,我计算的是每个部门的文员。
SQL> select deptno, ename, job from emp order by deptno, job;
DEPTNO ENAME JOB
---------- ---------- ---------
10 MILLER CLERK --> 1 clerk in department 10
10 CLARK MANAGER
10 KING PRESIDENT
20 SCOTT ANALYST
20 FORD ANALYST
20 ADAMS CLERK --> 2 clerks in
20 SMITH CLERK --> department 20
20 JONES MANAGER
30 JAMES CLERK --> 1 clerk in department 30
30 BLAKE MANAGER
30 MARTIN SALESMAN
30 WARD SALESMAN
30 ALLEN SALESMAN
30 TURNER SALESMAN
14 rows selected.
SQL>
这就是你现在要做的:
SQL> select deptno,
2 case when job = 'CLERK' and count(*) > 1 then
3 'More than a single clerk in department'
4 else
5 'Only one clerk in department'
6 end status
7 from emp
8 group by deptno;
case when job = 'CLERK' and count(*) > 1 then
*
ERROR at line 2:
ORA-00979: not a GROUP BY expression
SQL>
如果我们包含 job 列,错误就会消失,但是 - 结果不是我们预期的:
SQL> select deptno,
2 case when job = 'CLERK' and count(*) > 1 then
3 'More than a single clerk in department'
4 else
5 'Only one clerk in department'
6 end status
7 from emp
8 group by deptno, job
9 order by deptno;
DEPTNO STATUS
---------- --------------------------------------
10 Only one clerk in department
10 Only one clerk in department
10 Only one clerk in department
20 Only one clerk in department
20 More than a single clerk in department
20 Only one clerk in department
30 Only one clerk in department
30 Only one clerk in department
30 Only one clerk in department
9 rows selected.
SQL>
怎么办?不要count - sum!
SQL> select
2 deptno,
3 case when sum(case when job = 'CLERK' then 1 else 0 end) > 1 then
4 'More than a single clerk in department'
5 else
6 'Only one clerk in department'
7 end status
8 from emp
9 group by deptno
10 order by deptno;
DEPTNO STATUS
---------- --------------------------------------
10 Only one clerk in department
20 More than a single clerk in department
30 Only one clerk in department
SQL>
在你的情况下,那将是
case when sum(case when task_status = 'Waiting' then 1 else 0 end) > 30 then
'More tasks are in Waiting State'
end
注意字符串应该用单引号括起来,而不是双引号。