【发布时间】:2015-02-05 21:08:28
【问题描述】:
每个人 - 我可以使用你的帮助。
我有一个 SQL,我在其中检查一列以查看是否有金额。如果没有,我希望它输出 NULL。如果是这样,我希望它计算平均值。我正在使用这个 case 语句并且 NULL 语句工作正常,但我的平均语句只吐出 1 或 0。我已经搜索和测试了几个小时,但没有运气。
CASE
WHEN SUM(z.[SumTarget$]) = 0 THEN NULL
ELSE (1-(SUM(z.[SumBackorder])+SUM(z.[SumStockedOut]))/SUM(z.[CountofNo]))
END [SumAvPerc]
我已经通过注释掉第 3 行并使用它来检查字符串中的每个字段,以确保数字正确进入公式,到目前为止一切都已检查。
--ELSE SUM(z.[SumStockedOut])
这是字段和输出的示例。 **我无法发布图片,因为我需要更多声望点 :( **
【问题讨论】:
-
您可以添加图片链接,别人可以为您添加(但文字会更好)。我猜想您的一个(全部?)列的数据类型是整数或某种描述,并且您正在使用对整数执行整数除法的 RDBMS,例如 SQL Server ......但我只是猜测。你的数据类型是什么?您使用的是什么 RDBMS?你能提供一个最小的例子来说明你的问题吗?
-
是整数数学与十进制数学的问题。如果值以整数开头,则结果将被四舍五入。如果值以十进制开头,则不会。示例:3/2 = 2 而 3/2.0 = 1.5 我认为这与系统如何解释返回的列的数据类型有关。由于涉及的所有值都是整数,因此假定返回整数(不是十进制)
标签: sql sql-server case average