【发布时间】:2022-01-13 23:53:30
【问题描述】:
我需要创建一个函数来计算给定州和应征税额的销售税。如果状态在 SalesTax 表中不存在,则该函数应返回 0。但是当我运行该函数时,即使状态在 SalesTax 表中,它也只会返回空值。它应该返回的是税率(每个输入的州)*数量(也输入)
GO
Create or alter function TaxGivenAState
(@State char(2),@Quantity NUMERIC)
Returns NUMERIC
as
BEGIN
Declare @SalesTaxTotal NUMERIC
Declare @TaxRate NUMERIC
Select @SalesTaxTotal = @TaxRate*@quantity
From SalesTax s
Where s.TaxRate = @TaxRate and s.[State]=@State and @TaxRate=s.TaxRate
If(@SalesTaxTotal=0)
BEGIN
Return 0
END
ELSE
BEGIN
Return @SalesTaxTotal
END
return @salestaxtotal
END
【问题讨论】:
-
提供您的税表示例和预期结果表。
-
@Quantity NUMERIC你真的明白这是做什么的吗?精度和比例的默认值是什么?这些适合您的使用吗?我经常看到部分税率 - 你的代码没有。不要假设 - 始终指定可以变化的数据类型的属性。
标签: sql sql-server tsql