分段计算像计算个人所得税那样算法的函数
2012-08-16 14:25
148 查看
alter function udf_GetSumWithCoefficient(@input int)
returns int
as
BEGIN
DECLARE @DCName numeric(8,2)
DECLARE @DCCoefficient numeric(8,2)
DECLARE @DCStep numeric(8,2)
DECLARE @Sum numeric(8,2)
SET @Sum = 0.0
DECLARE db_cursor CURSOR FOR
SELECT [next].DCName, ISNULL([next].DCName, 0) - [current].DCName,[next].DCCoefficient
FROM DriveCoefficient AS [current]
inner JOIN DriveCoefficient AS [next] ON [next].DCName = (SELECT MIN(DCName) FROM DriveCoefficient WHERE DCName > [current].DCName)
union
SELECT DCName, DCName, DCCoefficient
FROM DriveCoefficient
where DCName = (select min(DCName) from DriveCoefficient)
order by 1
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @DCName, @DCStep, @DCCoefficient
WHILE @@FETCH_STATUS = 0
BEGIN
if @DCStep <= @input --步小于输入值
begin
set @Sum = @Sum + @DCStep * @DCCoefficient
set @input = @input - @DCStep
end
else
begin
set @Sum = @Sum + @input * @DCCoefficient
set @input = 0
end
FETCH NEXT FROM db_cursor INTO @DCName, @DCStep, @DCCoefficient
END
if @input > 0
set @Sum = @Sum + @input * @DCCoefficient
CLOSE db_cursor
DEALLOCATE db_cursor
return @Sum
END
returns int
as
BEGIN
DECLARE @DCName numeric(8,2)
DECLARE @DCCoefficient numeric(8,2)
DECLARE @DCStep numeric(8,2)
DECLARE @Sum numeric(8,2)
SET @Sum = 0.0
DECLARE db_cursor CURSOR FOR
SELECT [next].DCName, ISNULL([next].DCName, 0) - [current].DCName,[next].DCCoefficient
FROM DriveCoefficient AS [current]
inner JOIN DriveCoefficient AS [next] ON [next].DCName = (SELECT MIN(DCName) FROM DriveCoefficient WHERE DCName > [current].DCName)
union
SELECT DCName, DCName, DCCoefficient
FROM DriveCoefficient
where DCName = (select min(DCName) from DriveCoefficient)
order by 1
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @DCName, @DCStep, @DCCoefficient
WHILE @@FETCH_STATUS = 0
BEGIN
if @DCStep <= @input --步小于输入值
begin
set @Sum = @Sum + @DCStep * @DCCoefficient
set @input = @input - @DCStep
end
else
begin
set @Sum = @Sum + @input * @DCCoefficient
set @input = 0
end
FETCH NEXT FROM db_cursor INTO @DCName, @DCStep, @DCCoefficient
END
if @input > 0
set @Sum = @Sum + @input * @DCCoefficient
CLOSE db_cursor
DEALLOCATE db_cursor
return @Sum
END
相关文章推荐
- 实验博客1:1.个人所得税及税后计算。2.多分段函数计算。
- 【叶子函数分享五十七】计算个人所得税函数
- 计算个人所得税函数
- 算法题之个人所得税税率计算一(工资、薪金所得适用)
- 88df C++ 个人所得税计算
- 计算征收个人所得税
- 如何计算个人所得税?可以参考的11个标准计算工资的步骤,不足之处请补充
- 个人所得税税额计算与征收
- 第八周项目4个人所得税计算
- 个人所得税的计算
- 一句sql搞定个人所得税计算
- 2009上海最新“四金”及个人所得税计算(器)
- 分支-10. 计算个人所得税
- 第九章 计算个人所得税
- 个人所得税计算
- 分段函数之java算法
- 计算两个整数区间是否重叠的算法函数
- 百度联盟代扣个人所得税计算方法
- J2ME MIDP个人所得税计算小应用【附源码】
- 如何计算个人所得税?可以参考的11个标准计算工资的步骤,不足之处请补充