2017-05-17 11 views
1

こんにちは私は、mysqlに積み重なった棒グラフを作成しようとしていますが、まずクエリを取得して助けが必要です。selectステートメント内のwhereとifの場合

現在、私が持っている:

だけで正常に動作し、私は独自のどこ文のようなもの...

を含めるように3行目を変更する必要があるしかし screenshot

のように見えます

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) 

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

だから、誰かがこれを達成するのを手助けできますか?

おかげ

答えて

1

あなたは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ありがとう私は完全な照会をチェックしていません。 –

+0

おそらく、カウントの中でIFを使用できるかどうかを確認できます。私はCASEに使用するので、それは私が最初に行くものです。 –

1

を使用する必要がある場合は、書き込むことはできませんどのようにIFを書くことではなく、ここでチェックあなたに役立つかもしれませんが、あなたのシナリオではテストされていませんが、うまくいくはずです。

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

1+ –

0

でのようなものを、条件付きCOUNTを行い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) 
関連する問題