2016-01-18 56 views
0

我有了這個TSQL:如何讓我的計算SQL Server百分比值只顯示兩位小數?

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 )顯示比Cyrano de Bergerac的鼻子更長的值,例如「0.0252707581227436823」

我該如何強迫它改爲「0.03」(而這樣)呢?

+1

通常,這是一個顯示格式問題,應該由應用程序代碼處理,而不是數據庫。 – HABO

回答

1

嘗試明確鑄造計算列在創建表,如下:

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)) 

); 
1

使用ROUND函數

SELECT ROUND(column_name,decimals) FROM table_name; 
+0

PRICEVARIANCEPERCENTAGE作爲圓((WEEK2PRICE - WEEK1PRICE)/ NULLIF(WEEK1PRICE,0),2) –