2017-05-17 43 views
1

您好我想在mysql中編寫一個堆積條形圖,首先我需要得到正確的查詢,並需要一些幫助。計數在哪裏,如果,如果,在一個選擇語句

目前我有:

SELECT 
COUNT(TargetDate) AS Planned, 
COUNT(StartDate) AS Completed, 
MONTHNAME(TargetDate) AS `Month`, 
StartDate, 
AssessmentStatus 
FROM AuditCycleAssessments 
WHERE (Year(TargetDate) = Year(now())) 
GROUP BY MONTHNAME(TargetDate) 
ORDER BY Month(TargetDate) 

這工作得很好,看起來像screenshot

不過,我需要改變第3行,包括自己的where語句,像...

(COUNT(StartDate) if AssessmentStatus=3) AS Completed, 

所以1號,有人可以幫我實現這一點。

感謝

回答

1

檢查怎麼寫IF但在這裏,你可以不寫,如果你要使用CASE

SELECT 
COUNT(TargetDate) AS Planned, 
COUNT(CASE WHEN AssessmentStatus=3 THEN StartDate END) AS Completed, 
MONTHNAME(TargetDate) AS `Month`, 
StartDate, 
AssessmentStatus 
FROM AuditCycleAssessments 
WHERE (Year(TargetDate) = Year(now())) 
GROUP BY MONTHNAME(TargetDate) 
ORDER BY Month(TargetDate) 
+1

這沒有意義。因爲你在一個「GROUP BY」中,所以你正在使用一個隨機的'AssessmentStatus'來作出決定 –

+0

@JuanCarlosOropeza謝謝我只是爲了if語句我沒有檢查完整的查詢。 –

+0

可能你可以檢查是否可以使用計數內的IF。我用CASE,這是我第一次去。 –

1

做一個條件COUNTCASE聲明

SELECT 
    COUNT(TargetDate) AS Planned, 
    COUNT(CASE WHEN AssessmentStatus=3 THEN StartDate END) AS Completed, 
    MONTHNAME(TargetDate) AS `Month`, 
    StartDate, 
    AssessmentStatus 
FROM AuditCycleAssessments 
WHERE (Year(TargetDate) = Year(now())) 
GROUP BY MONTHNAME(TargetDate) 
ORDER BY Month(TargetDate) 
+0

1+從我身邊謝謝 –

0

有點像以下可能會爲您提供服務,未經您的場景測試,但它應該工作。

Sum(IIf([AssessmentStatus]=3 AND [StartDate] NOT IS NULL,1,0)) AS Completed,