Как я могу получить рассчитанное в процентах значение SQL Server для отображения только двух десятичных знаков?

У меня есть этот TSQL:

CREATE TABLE #TEMPCOMBINED(
  DESCRIPTION VARCHAR(200),
  WEEK1USAGE DECIMAL(18,2),
  WEEK2USAGE DECIMAL(18,2),
  USAGEVARIANCE AS WEEK2USAGE - WEEK1USAGE,
  WEEK1PRICE DECIMAL(18,2),
  WEEK2PRICE DECIMAL(18,2),
  PRICEVARIANCE AS WEEK2PRICE - WEEK1PRICE,
  PRICEVARIANCEPERCENTAGE AS (WEEK2PRICE - WEEK1PRICE) / NULLIF(WEEK1PRICE,0)
);

INSERT INTO #TEMPCOMBINED (DESCRIPTION, 
WEEK1USAGE, WEEK2USAGE, WEEK1PRICE, WEEK2PRICE)
SELECT T1.DESCRIPTION, T1.WEEK1USAGE, T2.WEEK2USAGE, 
T1.WEEK1PRICE, T2.WEEK2PRICE
FROM #TEMP1 T1
LEFT JOIN #TEMP2 T2 ON T1.MEMBERITEMCODE = T2.MEMBERITEMCODE

... который работает так, как я хочу (отображая значения с двумя десятичными знаками для столбцов "Использование" и "Цена"), за исключением того, что вычисленное процентное значение (PRICEVARIANCEPERCENTAGE) отображает значения, более длинные, чем нос Сирано де Бержерака, например "0.0252707581227436823"

Как я могу заставить это вместо "0,03" (и так далее) вместо этого?

3 ответа

Решение

Попробуйте явно привести вычисляемый столбец при создании таблицы, как показано ниже:

CREATE TABLE #TEMPCOMBINED(
  DESCRIPTION VARCHAR(200),
  WEEK1USAGE DECIMAL(18,2),
  WEEK2USAGE DECIMAL(18,2),
  USAGEVARIANCE AS WEEK2USAGE - WEEK1USAGE,
  WEEK1PRICE DECIMAL(18,2),
  WEEK2PRICE DECIMAL(18,2),
  PRICEVARIANCE AS WEEK2PRICE - WEEK1PRICE,
  PRICEVARIANCEPERCENTAGE AS CAST((WEEK2PRICE - WEEK1PRICE) / NULLIF(WEEK1PRICE,0) AS DECIMAL(18,2))

);

Использование функции ROUND(). Посмотрите здесь и здесь

Использовать функцию ROUND

SELECT ROUND(column_name,decimals) FROM table_name;
Другие вопросы по тегам