2016-02-11 106 views
0

我使用這個公式SQL Server 2012的MONEY數據類型問題

(p.Price - i.Price) * q.Qty 

在SQL Server 2012中有0或nullp.Price值。 p.Pricei.Price的數據類型是moneyq.Qtyint

因此,如果計算結果爲(0-10.00) * 50 = -500.00(這是一個負數,因爲它是按計劃購買的產品),但我總是在我的數據表中得到0或空值。

更新:

(sum(p.Price - i.Price) * q.Qty) 

,但我得到一個無效在選擇列表中,因爲它不是在聚合或group by子句包含的?

+0

價格沒有按;噸通常在負數最終 – HLGEM

+0

你需要一些分組或總和(q.qty) – SQLChao

+3

空+ anythign = NULL相同的所有數學運算 – HLGEM

回答

1

在SQL Server money類型中可以是負數。它具有此範圍:

-922,337,203,685,477.5808 to 922,337,203,685,477.5807 

檢查您的數據和公式,應該按預期工作:

DECLARE @m1 money = 0; 
DECLARE @m2 money = 10; 
DECLARE @qty int = 50; 

SELECT (@m1 - @m2) * @qty 

結果

(No column name) 
-500.00 

如果值可以爲NULL,你可以使用ISNULL將它們變成零:

DECLARE @m1 money = NULL; 
DECLARE @m2 money = 10; 
DECLARE @qty int = 50; 

SELECT (ISNULL(@m1,0) - ISNULL(@m2, 0)) * ISNULL(@qty, 0) 

結果

(No column name) 
-500.00