2013-10-24 33 views
2

我試圖找出如何計算每個三組我在此查詢產生的多少情況發生:MySQL的情況當計數,使用自定義組

SELECT 
CASE WHEN idStatus=6 THEN "Accepted" 
WHEN idStatus in (7,8) THEN "Denied" 
WHEN idStatus in (1,2,3,4,5,9,10,11,12,13,14) THEN "Working" END AS 'Claim Status' 
FROM claims 
WHERE Date > '2013-01-01' 

我想要的結果有兩個專欄,「索賠狀態」和「計數」,下面列出了我的三個小組中的每個小組以及他們在表中的數字。

回答

1

如果「包裝」您在另一個SELECT語句的查詢,則性能會降低顯著。您應該按您計算的字段進行分組:

SELECT 
CASE 
    WHEN idStatus = 6 THEN "Accepted" 
    WHEN idStatus IN (7,8) THEN "Denied" 
    WHEN idStatus IN (1,2,3,4,5,9,10,11,12,13,14) THEN "Working" 
END AS ClaimStatus, 
COUNT(*) ClaimCount 
FROM claims 
WHERE Date > '2013-01-01' 
GROUP BY ClaimStatus 
0

只是包裝您的查詢與外部查詢做分組:

SELECT claim_status AS 'Claim Status', COUNT(*) AS 'Count' 
FROM (
    SELECT 
    CASE 
     WHEN idStatus=6 THEN "Accepted" 
     WHEN idStatus in (7,8) THEN "Denied" 
     WHEN idStatus in (1,2,3,4,5,9,10,11,12,13,14) THEN "Working" 
    END AS claim_status 
    FROM claims 
    WHERE Date > '2013-01-01' 
} t 
GROUP BY claim_status