Арифметическая "сцепка" чисел в одно число с сохранением уникальности ряда

Приветствую!

По названию сложно понять, как тема относится к SQL. Поясняю.

Есть реальная таблица (на самом деле, это соединение нескольких таблиц, но упрощаю) с 12ю полями, участвующими в группировке (да — вот так и сократить вряд ли получится), а также 2мя полями (кол и сумм) для агрегации и 2мя полями, которые нужно будет "подтянуть" в сгруппированную таблицу.

Разумеется, группировка и, тем более, последующее "подтягивание" по такому количеству полей происходят очень долго.

Появилась идея для ускорения: математически "сцепить" построчно поля для группировки в одно с сохранением уникальности и однозначности ряда — так, чтобы значения рядов "1•2•3", "2•1•3", "3•2•1" (и так далее) сохранили уникальность.

Пока тестирую на простой текстовой сцепке — как показал, но, думаю, что математика будет лучше (и, скорее всего, быстрее), т.к. индекс по числу построить гораздо проще/быстрее, чем по строке (я так думаю, но не уверен).

Предлагаю рассмотреть вариант агрегации в Float (BigInt не хватит для этих целей).

Мои поля, максимальное количество цифр в значении (после "_"). Диапазон значений (в круглых скобках). 0 вместо Null:

Float: (округл. до 2ух знаков после запятой)
Price(-10^15 — 10^15)

Int_10(0 — 9 999 999 999):
Est

Int_7(0 — 9 999 999):
Spr1
Spr2
Spr3

Int_5(0 — 99 999):
Unit

TynyInt:
Type_1(1-4)

Bit(0-1):
B1
B2
B3
B4

Вот эти поля участвуют в группировке и я хочу их заменить одним полем Float.

Алгоритм:

1. Приводим Float к целому, чтобы использовать дробную часть в дальнейших преобразованиях: 100* Round(Field, 2).

2. Четыре Bit-поля преобразуем в одно число до 4ёх знаков: 1000*B1 + 100*B2 + 10*B3 + B4

То есть, вместо "1•0•0•1" получим 1001, а вместо "0•0•1•1" получим 11.