【发布时间】:2015-07-05 12:37:23
【问题描述】:
我正在尝试创建这个函数(变量名称已更改,因此允许命名错误,因为在没有函数的情况下测试原始文件可以正常工作),
CREATE FUNCTION [dbo].[GetQuality](@FruitID VARCHAR(200))
RETURNS varchar(200)
AS
BEGIN
DECLARE @Result varchar(200)
SET @Result = (
WITH
latest AS
(
SELECT * FROM (SELECT TOP 1 * FROM Fruits_Crate WHERE FruitID like @FruitID ORDER BY ExpiryDate DESC) a
),
result AS
(
SELECT
latest.ExpiryDate as LatestExpiryDate, latest.Size as LatestSize, latest.Weight as LatestWeight,
previous.ExpiryDate as PreviousExpiryDate, previous.Size as PreviousSize, previous.Weight as PreviousWeight,
CASE SIGN((latest.Weight * latest.Size) - (previous.Weight * previous.Size))
WHEN 1 THEN 'Increased'
WHEN 0 THEN 'Static'
WHEN -1 THEN 'Decreased'
ELSE 'No Previous Data'
END AS Movement
FROM (SELECT TOP 1 * FROM (SELECT TOP 2 * FROM Fruits_Crate WHERE FruitID like @FruitID ORDER BY ExpiryDate DESC) x ORDER BY ExpiryDate) previous
FULL OUTER JOIN latest ON previous.FruitID = latest.FruitID
)
SELECT result.Movement AS FruitMovement from result;
)
RETURN @Result
END
错误
消息 156,级别 15,状态 1,过程 GetQuality,第 10 行 关键字“WITH”附近的语法不正确。
消息 319,级别 15,状态 1,过程 GetQuality,第 10 行 关键字“with”附近的语法不正确。如果这个语句是一个公用表表达式、一个 xmlnamespaces 子句或一个更改跟踪上下文子句,则前面的语句必须以分号结束。
消息 102,级别 15,状态 1,过程 GetQuality,第 14 行 ',' 附近的语法不正确。消息 102,级别 15,状态 1,过程 GetQuality,第 31 行 ')' 附近的语法不正确。
【问题讨论】:
标签: sql-server sql-server-2008 function