2

我试图弄清楚如何计算我在此查询中创建的三个组中的每一个的实例有多少:

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'

我想要一个包含两列“索赔状态”和“计数”的结果,并且我的三个组中的每一个都在下面列出,它们的计数来自表。

4

2 回答 2

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
于 2013-10-24T13:33:04.053 回答
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
于 2013-10-24T13:22:31.227 回答