我想寫一個存儲過程(使用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