我需要創建一個函式來計算給定州和要征稅的金額的銷售稅。如果該狀態在 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
uj5u.com熱心網友回復:
您尚未@TaxRate使用任何值進行初始化,因此null當您將其與@quantity它相乘時,它總是會導致空值:
Declare @TaxRate NUMERIC
Select @SalesTaxTotal = @TaxRate*@quantity
該FROM組件在此處具有虛擬零效應,因為您根本沒有使用表中的值。
試試這個,我已經洗掉了您查詢的無關方面
GO
Create or alter function TaxGivenAState
(@State char(2),@Quantity NUMERIC)
Returns NUMERIC
as
BEGIN
Declare @SalesTaxTotal NUMERIC
Select TOP 1 @SalesTaxTotal = s.TaxRate*@quantity
From SalesTax s
Where s.[State]=@State
return @SalesTaxTotal
END
如果您想將稅收型別指定為引數,那么您應該將其作為引數包含在內,或者提供查詢以確定要使用的稅率型別,如果您提供稅表的片段,我們可能能夠建議您在這里出錯的其他領域。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/377477.html
標籤:sql sql-server 查询语句
