Sql server 2008 如何在SP中获取SQL计算的正确格式

Sql server 2008 如何在SP中获取SQL计算的正确格式,sql-server-2008,math,formula,calculated-columns,Sql Server 2008,Math,Formula,Calculated Columns,下面你可以看到我在一个大SP内为我的业务做的一些计算。我将在这里发布一行。问题是我无法获得正确的格式。应该是这样的: CONVERT(DECIMAL(30, 2), ( isa.sales_price * 0.8) * (1 - u.discount) ) as PRICE 结果示例: 销售价格为:149 美国的折扣是:24 结果为:-2741.60 我做错了什么 编辑,以下是一些帮助后的结果: CONVERT(DECIMAL(30, 2), ( isa.sales_price * 0.8

下面你可以看到我在一个大SP内为我的业务做的一些计算。我将在这里发布一行。问题是我无法获得正确的格式。应该是这样的:

CONVERT(DECIMAL(30, 2), ( isa.sales_price * 0.8) * (1 - u.discount) ) as PRICE
结果示例:

  • 销售价格为:149
  • 美国的折扣是:24
  • 结果为:-2741.60
我做错了什么

编辑,以下是一些帮助后的结果:

CONVERT(DECIMAL(30, 2), ( isa.sales_price * 0.8) * (1-(u.rabatt/100)) )

我怀疑,错的是计算结果并不是你所期望的:

149*0.8*(1-24)确实返回-2741.60

为什么你希望它能给你其他的东西


如果我大胆猜测的话,你应该把折扣除以100,因为它很可能是百分之一百的价值。但这只是猜测。

您的示例值与您期望的输出值不匹配,因此出现了一些问题。但是-你的销售价格和折扣是什么数据类型?编辑。销售价格为数字,折扣为十进制。如果这是一个更好的选择,两者都可以改变。是的,这是真的,我今天有点不舒服。虽然这是excel中的一个公式,百分比为24,但它将返回90.592,这正是我所寻找的。因为它只是我数据库中的一个数字,所以返回的是-2741.60值。有人知道我如何解决这个问题并修正公式吗?
选择CONVERT(十进制(30,2),(149*0.8)*(1-24/100.0))
返回90.59-正如我在回答中所说的,我怀疑你只需要将折扣除以100True即可,谢谢:)
CONVERT(十进制(30,2),
这是有效的!