Использовать значение из проекции в выражении можно без проблем. В MS SQL значения функции не передаются в качестве аргумента. Далеко не все СУБД поддерживают функции.
В итоге вариант с функцией менее универсален. Особенно это проявляется при отображении перечислимых типов (enumeration) на реляции с последующим использованием их в запросах. Например.
CREATE VIEW CalculationRule(Unknown, TurnoverWithFixedQuantity, QuantityWithFixedTurnover)
AS SELECT 0, 1, 2;
GO
CREATE VIEW CalculationRuleValues
AS SELECT 'Unknown' AS name, 0 AS value
UNION
SELECT 'TurnoverWithFixedQuantity' AS name, 1 AS value
UNION
SELECT 'QuantityWithFixedTurnover' AS name, 2 AS value
GO
Использовать значение из проекции в выражении можно без проблем. В MS SQL значения функции не передаются в качестве аргумента. Далеко не все СУБД поддерживают функции.
В итоге вариант с функцией менее универсален. Особенно это проявляется при отображении перечислимых типов (enumeration) на реляции с последующим использованием их в запросах. Например.
Преобразуется в 2 проекции