2017-05-22 240 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