创建一个简单的函数来返回输入的商品价格的GST。 问题是它返回正确的金额,但是对于每个其他项目指定的ID具有正确的金额。这是错的。 功能是:
CREATE FUNCTION dbo.fn_GSTPrice
(@ItemID INT)
RETURNS FLOAT
AS
BEGIN
DECLARE @GSTRate FLOAT
SET @GSTRate = 0.1
DECLARE @GSTFinal FLOAT
SET @GSTFinal = (SELECT Price * (@GSTRate)
FROM Products
WHERE ItemID = @ItemID)
RETURN @GSTFinal
END
Select Statement为:
SELECT ItemDescription,
dbo.fn_GSTPrice(1) AS GSTFinal
FROM Items
返回的是:
ItemDescription | GST
----------------------
Item1 | 25
Item2 | 25
Item3 | 25
Item4 | 25
Item5 | 25
Item6 | 25
Item7 | 25
Item8 | 25
Item9 | 25
Item10 | 25
Item1是ItemID(1),依此类推...... 25是Item1的GST金额 但是为什么ItemID(1)的商品及服务税价值也出现在那些不属于该ID的其他人身上..而且25不是其他任何人的商品及服务税价值。?
我缺少什么或者不明白? 我需要它只显示在fn_GSTPrice()中输入的ItemID。
编辑#1 :@joanolo答案很好,如果我只想检查该项目的GST ......永远。但我希望在参数中输入任何ID的结果,而不必每次都更改WHERE子句。
示例:
SELECT Description, fn_GSTPrice(43) AS 'GST Total'
FROM Products
WHERE ItemID = (@ItemID entered into Parameter for GSTPrice)
无需将WHERE子句更改为1或43或13或我在GSTPrice中添加的任何内容()??