次のテーブルがあります。
Bradford_Score_Bands
BandNo InclusiveScore
------------------------
1 0
2 150
3 500
Bradford_Scores
ClockNo Dated Score
--------------------------------
2 30/10/14 123
99 30/10/14 3
2 29/10/14 101
99 29/10/14 8
従業員
ClockNo
--------------------
2
3
99
私の目的は、スコアに基づいて、今日と昨日の各 ClockNo の BandNo を計算することです。
次のようなスコア値に基づいて、正しい BandNo を見つけることができます。
SELECT MIN(BandNo) FROM Bradford_Score_Bands WHERE InclusiveScore >= 123
次のように、各人の今日と昨日のスコアを見つけることができます。
SELECT DISTINCT EMP.ClockNo,
ISNULL((SELECT Score FROM Bradford_Scores BFT WHERE Dated = '2014-10-30' AND BFT.ClockNo = EMP.ClockNo), 0) As ScoreToday,
ISNULL((SELECT Score FROM Bradford_Scores BFT WHERE Dated = '2014-10-29' AND BFT.ClockNo = EMP.ClockNo), 0) As ScoreYesterday
FROM Employees EMP
しかし、私は2つを組み合わせることができないようです。私はこのようなものがうまくいくと思った:
SELECT DISTINCT EMP.ClockNo,
(SELECT MIN(BandNo) FROM Bradford_Score_Bands WHERE InclusiveScore >=
(SELECT Score FROM Bradford_Scores BFT1 WHERE Dated = '2014-10-30' AND BFT1.ClockNo = EMP.ClockNo)),
(SELECT MIN(BandNo) FROM Bradford_Score_Bands WHERE InclusiveScore >=
(SELECT Score FROM Bradford_Scores BFT2 WHERE Dated = '2014-10-29' AND BFT2.ClockNo = EMP.ClockNo))
FROM Employees EMP
しかし、BFTX.ClockNo = EMP.ClockNo を参照するサブクエリの部分が原因で、クエリが失敗しているようです。「Data Record ManagerCurrency not on a record」という役立つ広範囲エラーが表示されます
編集: SQL Server でこれとまったく同じクエリを試してみましたが、うまくいきました。これを書き直して、より Pervasive フレンドリーにする方法はありますか?