




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 писал(а):Этот запрос даст сбой на несклоняющихся фамилиях, оканчивающихся на "а" (Веревка, например, есть у меня в справочнике такая фамилия).

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6