alibek писал(а):Завести в таблице дополнительный столбец, в котором будет фамилия в мужском роде (независимо от пола) и сверять по нему.
SELECT Фамилия=CASE WHEN RIGHT(Фамилия,1)='а'
THEN LEFT(Фамилия, LEN(Фамилия)-1)
ELSE Фамилия END,
[Кол-во]=COUNT(*)
FROM _Test
GROUP BY CASE WHEN RIGHT(Фамилия,1)='а'
THEN LEFT(Фамилия, LEN(Фамилия)-1)
ELSE Фамилия END
ORDER BY 1
alibek писал(а):Andrey Fedorov, заполнять его может программа.
А отличие далеко не только в этом.
Пример: Жириновский/ая. Я как-то делал процедуру, которая умела склонять слова, окончаний, на которые надо было обращать внимание, было не меньше четырех.
SELECT Фамилия=CASE WHEN RIGHT(Фамилия,1)='а' THEN LEFT(Фамилия, LEN(Фамилия)-1)
WHEN RIGHT(Фамилия,2)='ая'
OR RIGHT(Фамилия,2)='ой'
OR RIGHT(Фамилия,2)='ий'
THEN LEFT(Фамилия, LEN(Фамилия)-2)+'ий(ой)'
ELSE Фамилия END,
[Кол-во]=COUNT(*)
FROM _Test
GROUP BY CASE WHEN RIGHT(Фамилия,1)='а' THEN LEFT(Фамилия, LEN(Фамилия)-1)
WHEN RIGHT(Фамилия,2)='ая'
OR RIGHT(Фамилия,2)='ой'
OR RIGHT(Фамилия,2)='ий'
THEN LEFT(Фамилия, LEN(Фамилия)-2)+'ий(ой)'
ELSE Фамилия END
ORDER BY 1
alibek писал(а):Этот запрос даст сбой на несклоняющихся фамилиях, оканчивающихся на "а" (Веревка, например, есть у меня в справочнике такая фамилия).
Сейчас этот форум просматривают: Google-бот и гости: 1