2017-05-22 177 views
-1

如何满足条件?我需要计数的记录数满足条件计算出现次数

enter image description here

(A || B) && С 
(A || B) && !С 
(A || B) || С 

例如第一条件

(A || B)& &С

  • NUM = 1 - 适应条件。目前CAT = A,CAT = B和CAT = C

  • num = 2 - 适合条件。目前CAT = A和CAT = C

  • num = 3 - 不符合条件。目前仅在CAT = C (表达式(A || B)& &С为假)

所以导致表表达式看起来

COLUMN_EXP    COUNT 
(A || B) && С   2 
(A || B) && !С   0 
(A || B) || С   3 
+0

你试过SQL语句吗? – Randy

+0

你有什么想法 – LeshaRB

回答

3

查询

SET DEFINE OFF; 

SELECT * 
FROM (
    SELECT COUNT(CASE WHEN (A > 0 OR B > 0) AND C > 0 THEN 1 END) AS "(A||B)&&C", 
     COUNT(CASE WHEN (A > 0 OR B > 0) AND C = 0 THEN 1 END) AS "(A||B)&&!C", 
     COUNT(CASE WHEN (A > 0 OR B > 0) OR C > 0 THEN 1 END) AS "(A||B)||C" 
    FROM your_table 
    PIVOT (COUNT(*) FOR cat IN ('A' AS A, 'B' AS B, 'C' AS C)) 
) 
UNPIVOT(
    "COUNT" FOR COLUMN_EXP IN ("(A||B)&&C", "(A||B)&&!C", "(A||B)||C") 
); 

输出

COLUMN_EXP COUNT 
---------- ----- 
(A||B)&&C  2 
(A||B)&&!C  0 
(A||B)||C  3 
+0

我刚刚提到了PIVOT功能。一个很棒的工具,用于这样的事情 –

+0

谢谢你的支持。我可以在这段时间内进行细分吗? select ... from表GROUP BY(TO_CHAR(operation_time,'YYYY-MM')??? – LeshaRB

+0

谢谢你的解决方案。 – LeshaRB