В одну сторону ...
WITH T(NumericField, DecimalPlaces) AS
(
SELECT 1.234,10 UNION ALL
SELECT 1.234,3
)
SELECT CASE DecimalPlaces
WHEN 15 THEN CAST(NumericField AS NUMERIC(30, 15))
WHEN 14 THEN CAST(NumericField AS NUMERIC(30, 14))
WHEN 13 THEN CAST(NumericField AS NUMERIC(30, 13))
WHEN 12 THEN CAST(NumericField AS NUMERIC(30, 12))
WHEN 11 THEN CAST(NumericField AS NUMERIC(30, 11))
WHEN 10 THEN CAST(NumericField AS NUMERIC(30, 10))
WHEN 09 THEN CAST(NumericField AS NUMERIC(30, 9))
WHEN 08 THEN CAST(NumericField AS NUMERIC(30, 8))
WHEN 07 THEN CAST(NumericField AS NUMERIC(30, 7))
WHEN 06 THEN CAST(NumericField AS NUMERIC(30, 6))
WHEN 05 THEN CAST(NumericField AS NUMERIC(30, 5))
WHEN 04 THEN CAST(NumericField AS NUMERIC(30, 4))
WHEN 03 THEN CAST(NumericField AS NUMERIC(30, 3))
WHEN 02 THEN CAST(NumericField AS NUMERIC(30, 2))
WHEN 01 THEN CAST(NumericField AS NUMERIC(30, 1))
WHEN 00 THEN CAST(NumericField AS NUMERIC(30, 0))
ELSE CAST(NULL AS SQL_VARIANT)
END
FROM T