Чистый способ сделать это без добавления временной таблицы, циклов и т. Д. Был бы с помощью Common Table Expression (CTE). Пример:
;WITH PersonsWithInitials AS
(
SELECT
SUBSTRING (COALESCE(Person.FirstName,''), 1, 1)
+ SUBSTRING (COALESCE(Person.LastName,''), 1, 1) AS Initials,
FirstName,
LastName,
City
FROM
[Person]
)
SELECT
FirstName,
LastName,
City,
Initials
FROM
PersonsWithInitials
WHERE
/* Complex WHERE clause goes here and it can reference Initials as if it were a field */
Вместо пустого '' вы можете использовать точку или что-то еще, чтобы заменить поля с нулевым именем.
Все это должно выполняться за один вызов SQL из .NET - CTE не сохраняется в базе данных, как представление, хранимая процедура, временная таблица и т. Д.