Проблема, с которой вы здесь столкнетесь, - это производительность с операцией, которую вы описываете. Движок будет рассчитывать «Значение * (время, прошедшее с момента создания)» для каждой записи в таблице. Это происходит всякий раз, когда у вас есть столбец в функции.
Идея. Для больших таблиц затраты на получение 600 строк и последующее получение 200 верхних из них намного меньше, чем выполнение вычислений для каждого запроса.
SQL не является корректным как есть (порядок и объединения), но идея верна.
SELECT TOP 200 ident
FROM
(
SELECT TOP 200 ident, (GETDATE() - creation_date) * 1 AS calc_order
FROM jobs
WHERE priority = 1
ORDER BY creation_date
UNION ALL
SELECT TOP 200 ident, (GETDATE() - creation_date) * 2 AS calc_order
FROM jobs
WHERE priority = 2
ORDER BY creation_date
UNION ALL
SELECT TOP 200 ident, (GETDATE() - creation_date) * 3 AS calc_order
FROM jobs
WHERE priority = 3
ORDER BY creation_date
) x
ORDER BY
calc_order DESC