Для демонстрационных данных, которые вы разместили, необходимо сначала упорядочить по части имени до подчеркивания:
SELECT * FROM table_1
order by lower(left(Name, charindex('_', name))), Version, lower(Name);
или, если перед подчеркиванием всегда только 1 символ:
SELECT * FROM table_1
order by lower(left(Name, 1)), Version, lower(Name);
Я использую lower()
только потому, что он есть в вашем коде. Если это не нужно, вы можете удалить его. Смотрите демо . Результаты:
> Name | Version | Age | Registration_Date
> :--- | ------: | --: | :----------------
> A_x | 1 | 35 | 20/1/2019
> A_y | 1 | 12 | 20/1/2019
> A_x | 2 | 34 | 20/1/2019
> A_y | 2 | 35 | 20/1/2019
> C_x | 1 | 54 | 20/1/2019
> C_y | 1 | 65 | 20/1/2019
> C_x | 2 | 99 | 20/1/2019
> C_y | 2 | 77 | 20/1/2019
> E_x | 1 | 89 | 20/1/2019
> E_y | 1 | 27 | 20/1/2019
> F_x | 1 | 11 | 20/1/2019
> F_y | 1 | 22 | 20/1/2019