新しい列を TableA に追加してから、テーブル B の値で更新する場合、これが最終的な更新です。
UPDATE TableA
SET Colour = B.Colour
FROM TableA A
INNER JOIN TableB B ON B.Month = A.Month AND B.RangeStart < A.Average AND (B.RangeEnd IS NULL OR B.RangeEnd > A.Average)
特定の月のテーブル B にデータがなく、テーブル A に平均データがない可能性がある場合は、LEFT OUTER JOIN を使用してデフォルト値を指定する必要があります。
UPDATE TableA
SET Colour = ISNULL(B.Colour, N'SomeColour')
FROM TableA A
LEFT OUTER JOIN TableB B ON B.Month = A.Month AND B.RangeStart < A.Average AND (B.RangeEnd IS NULL OR B.RangeEnd > A.Average)
また、テーブル A で発生しているように、テーブル B のデータが年に依存するかどうかを確認する必要があります。
この場合、このフィールドを Join の On 句に追加する必要があります。
UPDATE TableA
SET Colour = B.Colour
FROM TableA A
INNER JOIN TableB B ON B.Year = A.Year AND B.Month = A.Month AND B.RangeStart < A.Average AND (B.RangeEnd IS NULL OR B.RangeEnd > A.Average)
更新を実行する前に、最初に次のクエリを実行して、目的の値が得られていることを確認できます。
SELECT Department, A.Month, Average, B.Colour
FROM @tableA A
INNER JOIN @tableB B ON B.Month = A.Month AND B.RangeStart < A.Average AND (B.RangeEnd IS NULL OR B.RangeEnd > A.Average)
お役に立てれば :)