函数指定值返回但在MYSQL中的每个列中不仅仅是1

时间:2017-07-09 10:44:00

标签: mysql

创建一个简单的函数来返回输入的商品价格的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中添加的任何内容()??

0 个答案:

没有答案