我想写一个存储过程(使用SQL Server Management Studio 2008 R2)从表中检索最大测量值。这似乎是一件容易的事情,所以我编写了一个简短的存储过程来获取MAX。但是,当我运行该过程时,它返回0而不是预期的0.018值。内置的MAX函数只返回一个整数
当我将鼠标悬停在MAX函数上时,它显示“内置函数MAX(expression)RETURNS int”。所以它似乎将我的结果作为一个整数。这很烦人。
我想我必须计算最长的路,除非这里有人有一个更简单的解决方案。有任何想法吗?
ALTER PROCEDURE [dbo].[GetMaxOscillation] (@SerialNumber varchar (16), @Date datetime)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @MaxOsc DECIMAL(18,6)
SELECT @MaxOsc = MAX(Value)
FROM LoadListingOscillations
WHERE [email protected] AND [email protected] AND Value IS NOT NULL
RETURN @MaxOsc
SET NOCOUNT OFF
END
MAX(许多列)将采取它正在评估的列的数据类型。 – 2012-04-20 16:18:15
在没有存储过程的情况下自行运行查询会发生什么? – antlersoft 2012-04-20 16:19:15
值是可以为空的Decimal(18,6)。当我自己运行查询时,它工作得很好。 – Lara 2012-04-20 16:26:26