I confess that my SQL knowledge is very weak.
Is this for a one-off query or a regular query?
If it's a one-off, then you can create a temp database to do the sorting.
If it's a regular query, then you can look in to 'Callback columns', and create a secondary index over this calculated column. This means you have another index to maintain, which can get expensive if you create too many indices. Look at ColumndefGrbit.ColumnUserDefinedDefault.
/// The default value for a column will be provided by a callback function. A column that
/// has a user-defined default must be a tagged column. Specifying JET_bitColumnUserDefinedDefault
/// means that pvDefault must point to a JET_USERDEFINEDDEFAULT structure, and cbDefault must be
/// set to sizeof( JET_USERDEFINEDDEFAULT ).
ColumnUserDefinedDefault = 0x8000,