私は以前はたくさんのことをするクエリを持っていましたが、そのうちの1つは各従業員の給与の増加について教えています。それは期日ですか?それは延滞ですか?それは早すぎるのですか?MSアクセスの条件が満たされない場合
質問は、パラメータを入力するように依頼した後、この質問をした後removing "enter parameter value" in query MS access私は束に1つのクエリを壊した、各クエリは、if条件を持つ最後のものまで他のビルド。 すべてがあれば条件を除いて、まさに私がそれを望むように働いていた(前に正常に動作するために使用!!!)
をこれは私の昇給のための条件
Eligibility: IIf([MonthsSinceLastIncrease] < 24, IIf([MonthsSinceLastIncrease] >= 18
AND [LastOfRatings] <= 2, "OVERDUE", IIf([MonthsSinceLastIncrease] >= 15
AND [LastOfRatings] = 1, "OVERDUE", IIf([MonthsSinceLastIncrease] >= 9
AND [MonthsSinceLastIncrease] < 15
AND [LastOfRatings] = 1, "Eligible", IIf([MonthsSinceLastIncrease] >= 12
AND [MonthsSinceLastIncrease] < 18
AND [LastOfRatings] = 2, "Eligible", "ok")))), "OVERDUE")
ルールがようであれば次の:
- 従業員の評価は3であれば、彼は 彼の最後の1
- の24ヶ月後に増加を取得し、従業員の評価は2であるならば、彼は12-18の1を取得ヶ月
- 従業員の評価は1であるならば、彼は、今、何が起こる9-15ヶ月
に1を取得した従業員のいくつかのために、私は1つのレコードだけを取得し、それが正しいのですが、いくつかのためということです従業員、私は2つのレコードを取得し、それらのうちの1つは正しいものであり、他のものは正しくありません。今の代わりに、48回の記録(私は条件がうまく働いたときに取得するために使用したもの)、私はこれは
あなたの助けがはるかに高く評価されてSELECT IIf([MonthsSinceLastIncrease] < 24, IIf([MonthsSinceLastIncrease] >= 18
AND [LastOfRatings] <= 2, "OVERDUE", IIf([MonthsSinceLastIncrease] >= 15
AND [LastOfRatings] = 1, "OVERDUE", IIf([MonthsSinceLastIncrease] >= 9
AND [MonthsSinceLastIncrease] < 15
AND [LastOfRatings] = 1, "Eligible", IIf([MonthsSinceLastIncrease] >= 12
AND [MonthsSinceLastIncrease] < 18
AND [LastOfRatings] = 2, "Eligible", "ok")))), "OVERDUE") AS Eligibility
,MonthsSinceLastUpdateQ.LocalID
,MonthsSinceLastUpdateQ.LastOfRatings
,MonthsSinceLastUpdateQ.MaxOfDateOfUpdate
,MonthsSinceLastUpdateQ.MonthsSinceLastIncrease
FROM MonthsSinceLastUpdateQ
,DateOfUpdateQ
GROUP BY IIf([MonthsSinceLastIncrease] < 24, IIf([MonthsSinceLastIncrease] >= 18
AND [LastOfRatings] <= 2, "OVERDUE", IIf([MonthsSinceLastIncrease] >= 15
AND [LastOfRatings] = 1, "OVERDUE", IIf([MonthsSinceLastIncrease] >= 9
AND [MonthsSinceLastIncrease] < 15
AND [LastOfRatings] = 1, "Eligible", IIf([MonthsSinceLastIncrease] >= 12
AND [MonthsSinceLastIncrease] < 18
AND [LastOfRatings] = 2, "Eligible", "ok")))), "OVERDUE")
,MonthsSinceLastUpdateQ.LocalID
,MonthsSinceLastUpdateQ.LastOfRatings
,MonthsSinceLastUpdateQ.MaxOfDateOfUpdate
,MonthsSinceLastUpdateQ.MonthsSinceLastIncrease;
、ということに注意してください全体のクエリのコードは58
取得私は間違いなくコーディングを知っていて、私が行くようにMS Accessを学んでいただけであり、ありがとう!
DateOfUpdateQを返す行の数はいくつですか?どちらのクエリもリンクされていないため、レコードが重複する可能性があります。 DateOfUpdateQ –
DateOfUpdateQは48を返します。どのようにクエリをリンクしますか? –
'JOIN'を使うか、単にクエリービルダーで結合する必要があるカラムをドラッグ&ドロップします。 –