Я работаю над этим запросом почти два дня. Существует таблица для персонала, как показано ниже. В каждом месте есть несколько сотрудников, которые получают список клиентов, которым они должны позаботиться об этом на основе перечисленных альфов. однако альфы не являются стандартными одиночными или двойными символами, вместо этого они помещают одну-три три буквы, как вы можете видеть на столе. Я пытаюсь получить список клиентов и их назначающих сотрудников на основе фамилии клиентов в этих альфа-диапазонах, я пробовал много запросов и все они терпят неудачу на определенном уровне.Список имен SQL Server 2008 на основе нескольких символов alphas
Я использовал пару КТР, чтобы получить все в порядке и попытался следующее максимальное
declare @maxChar varchar(3) = (select min(len(val)) from (
select staffStartChar val from StaffAlphaList where staffLocId = 1
union
select staffEndChar from StaffAlphaList where staffLocId = 1
)temp)
select customerName
, upper(LTRIM(RTRIM(
LTRIM(RTRIM(ISNULL(employee.f_name, ''))) + ' ' +
LTRIM(RTRIM(ISNULL(employee.m_name, ''))) + ' ' +
LTRIM(ISNULL(employee.l_name, ''))
)))
from Customers with (nolock)
left outer join StaffAlphaList with (nolock)
on StaffAlphaList.staffLocId= Customers.LocId
left outer join employee with (nolock)
on employee.empl_no = StaffAlphaList.staffId
where lower(left(customerLastName, @maxChar)) between StaffAlphaList.staffStartChar and StaffAlphaList.staffEndChar
Set [Bad Habits to kick-putting NOLOCK повсюду] (http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/) - это не рекомендуется * использовать это везде - вполне наоборот! –