我正在使用这个公式
(p.Price - i.Price) * q.Qty
SQL Server 2012中的。p.Price
值为0或null
。 p.Price
和i.Price
的数据类型为money
,q.Qty
为int
。
所以,如果计算是(0-10.00) * 50 = -500.00
(它是一个负数,因为它是按计划购买的产品),但我的数据表中总是得到0或null。
更新:
(sum(p.Price - i.Price) * q.Qty)
但是我在选择列表中收到了无效,因为它没有包含在聚合或group by子句中?
答案 0 :(得分: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