您可以在存储过程中进行任何计算并返回数据。像存储过程这样的利息计算需要大量的计算。
您必须以任何方式使用其他表数据计算数据。
SUM我们可以在SP中做,
Declare @SUMAmount decimal(12,3)
-- 还声明@A、@B 等
Select @SUMAmount= SUM(ISNULL(@A,0)+ISNULL(@B,0)+ISNULL(@C,0)+ISNULL(@D,0))
Select @SUMAmount= SUM((ISNULL(@A,0)+ISNULL(@B,0))*(ISNULL(@C,0)-ISNULL(@D,0)))
根据您的要求,您可以提供条件。
ISNULL 用于检查数据是否为 NULL,然后返回 0。无法使用 Null 值进行计算,因此最好给出 ISNULL 条件。
Select A,B,SUM(C),D From TableName
Where SUM(C)>0
Group By A,B,D
这里有聚合函数和非聚合函数,所以你必须使用 Group By。您可以根据您的条件获取值,例如:“SUM(C)>0”。Group By 之后也可以在这里使用。
Declare @TotalNoofDays int
@TotalNoofDays = DATEDIFF(d, fromdate, todate)
用于查找使用此功能的天数。
您可以使用类似的条件,
if @DueAmount >=0
BEGIN
IF @DiscountFlag = 1
BEGIN
SET @DueIntAmount = 0
END
ELSE
BEGIN
SET @DueIntAmount = ((@DueAmount*(@IntRateOnDue/100))/365)*@NoofDays
END
SET @ExcessInterestAmount = 0
END
ELSE
BEGIN
SET @DueIntAmount = 0
SET @ExcessInterestAmount = ((@DueAmount*(@IntRateOnDeposit/100))/365)*@NoofDays
END
就像您可以在存储过程中进行的计算一样。
如果要对记录数一一进行计算,则可以使用临时表while循环..
Create Proc NewLearningProcedure
(
@Name Varchar(50),
@Date DateTime
)
AS
Begin
Declare @Temp Table
(
ID int Identity(1,1),
Name Varchar(50),
Date DateTime
)
Insert Into @Temp
Select @Name,@Date
Declare @i int
set @i=10
While @i>0
Begin
Insert Into @Temp
Select @Name+CAST(@i as varchar(50)),@Date
Set @i=@i-1
End
Select * from @Temp
End
就像您可以使用存储过程做任何事情一样。