【发布时间】:2010-12-30 08:21:41
【问题描述】:
我需要有关此标量值函数的帮助。
我想要做的是在max(Value) AS MaxValue这一行返回我在MaxValue中得到的值。
如果ItemId 和ListPropertyId 存在,该查询将只返回1 个值,但我无法创建它的函数。
CREATE FUNCTION GetLpivMax
(
-- Add the parameters for the function here
@ItemId int,
@ListPropertyId int
)
RETURNS int
AS
BEGIN
DECLARE @output INT;
WITH U AS (
SELECT i.Id AS ItemId,
lpiv.Value,
lp.Id AS ListPropertyId
FROM ListPropertyItemValues lpiv
JOIN ListPropertyItems lpi ON lpi lpi.Id = lpiv.ListPropertyItemId
JOIN ListProperties lp ON lp.Id = lpi.ListPropertyId
JOIN Items i ON i.Id = lpiv.ItemId)
SELECT @output = MAX(u.value)
FROM U u
WHERE u.listpropertyid = @ListPropertyId
AND u.itemid = @ItemId
GROUP BY u.listpropertyid, u.itemid
RETURN @output
END
GO
【问题讨论】:
-
+1:对于使用表别名,但请不要在 SO 上发布制表符分隔的代码 - 它确实会干扰输出并使纠正它们变得很痛苦。有关降价语法的更多信息,请参阅:stackoverflow.com/editing-help
标签: sql sql-server sql-server-2005 sql-server-2008 user-defined-functions