Использование функций в качестве упомянутого spencer7593 является правильным подходом для динамических данных. Для статических данных более производительный подход, который согласуется с дизайном данных SQL (по сравнению с анти-паттерном написания массивного процедурного кода в sprocs), заключается в создании отдельной таблицы со статическими значениями и присоединении к ней. Это чрезвычайно полезно с точки зрения производительности, поскольку SQL Engine может строить эффективные планы выполнения на основе JOIN, и у вас есть возможность добавлять индексы, если это необходимо.
Недостаток использования функций (или любых встроенных вычисляемых значений) заключается в том, что сноска происходит для каждой возвращаемой строки потенциала , что является дорогостоящим. Зачем? Поскольку SQL должен сначала создать полный набор данных с вычисленными значениями, а затем применить предложение WHERE к этому набору данных.
В девяти случаях из десяти вам не нужно динамически вычислять значения ячеек в ваших запросах. Намного лучше выяснить, что вам нужно, затем спроектировать модель данных, которая ее поддерживает, и заполнить эту модель данных полудинамическими данными (например, с помощью пакетных заданий) и использовать SQL Engine для выполнения тяжелый подъем с помощью стандартного SQL.