[英]not a single-group function in case statement
tab1
ID_P , SYN
1 0
2 0
2 1
2 0
tab2
ID_P , SYN
2 1
2 1
4 0
select CASE WHEN COUNT(SYN) > 1 THEN '0'
WHEN COUNT(SYN) = 0 AND SYN > 0 THEN '0'
ELSE '1' END
from (
select COUNT(SYN) as SYN
from tab1
where ID_P = 2 and SYN <> '0'
union
select COUNT(SYN) as SYN
from tab2
where ID_P = 2 and SYN <> '0' )
What i want to verify is 我要验证的是
The problem occurs int the second statement, ORA-00937 not a single-group group function , How can i overcome this problem ? 问题出现在第二个语句ORA-00937不是单组功能中,我该如何克服这个问题? The result should be zero because there are rows containing '1'.
结果应该为零,因为有些行包含“ 1”。 Thanks in advance Best regards
预先感谢问候
Actually m confused a bit by what actually you are trying to achieve, Below example might help you out
实际上,我对您实际要实现的目标感到有些困惑,下面的示例可能会帮助您
SELECT
CASE
WHEN COUNT(1) > 1
THEN '0'
WHEN COUNT(1) =1
AND MAX(A.SYN) > 0
THEN '0'
ELSE '1'
END col1
FROM
(SELECT COUNT(SYN) AS SYN
FROM
(SELECT 1 ID_P,0 SYN FROM DUAL
UNION ALL
SELECT 2 ID_P,0 SYN FROM DUAL
UNION ALL
SELECT 2 ID_P,1 SYN FROM DUAL
UNION ALL
SELECT 2 ID_P,0 SYN FROM DUAL
)
WHERE ID_P = 2
AND SYN <> '0'
UNION
SELECT COUNT(SYN) AS SYN
FROM
(SELECT 2 ID_P,1 SYN FROM DUAL
UNION ALL
SELECT 2 ID_P,1 SYN FROM DUAL
UNION ALL
SELECT 4 ID_P,0 SYN FROM DUAL
)
WHERE ID_P = 2
AND SYN <> '0'
) a;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.