Причина ошибки в том, что вы не использовали квадратные скобки вокруг имени поля, как в предложении SELECT
: [Batting Average]
.
Однако вы не можете ссылаться на псевдонимы из * Предложение 1005 * в предложении WHERE
. Причина в том, что предложение WHERE
оценивается до оценки выражений в предложении SELECT
. С другой стороны, вы можете ссылаться на такой псевдоним в предложении ORDER BY
. Но не забудьте эти скобки.
В предложении WHERE
вам снова придется использовать формулу в исходных полях.
Также следует избегать деления на ноль. Так что лучше убедитесь, что AB
не равно нулю.
Наконец, вы не указали соединение для двух таблиц, поэтому ваш запрос даст декартово произведение. Я предполагаю, что в таблице Batting есть внешний ключ с именем playerid
.
Итак, принимая во внимание все эти моменты, это должен быть лучший запрос:
SELECT people.playerid,
(nameFirst +' ( '+ nameGiven + ' ) ' + nameLast) AS 'Full Name',
yearID,
H,
AB,
Convert(decimal(5,4), h*1.0/AB) as [Batting Average]
FROM People
INNER JOIN Batting ON Batting.playerid = People.playerid
WHERE AB <> 0
AND h*1.0/AB BETWEEN .300 AND 0.3249
ORDER BY [Batting Average] DESC