根值拆分.
需要一分若干,
由於每次上限金¥50,000, 故假工的月薪是¥58,000, 便需行2次, 即第一次是
¥50,000, 第二次是¥8,000 ,如果工月薪是152000,行四次,生四,前三是
Y 50000,后一次是2000 以此推。
如何生成此呢。。有什么好的方法..
如工1 值15200 就得到以下.
empi name salary
1 liko 50000
1 liko 50000
1 liko 50000
1 liko 2000
[解决办法]
- SQL code
-- with循环 m就是你要的数值; with a as( select n='liko', m=5000, m1 = 15200-5000 union all select n=a.n, m=(case when a.m1<5000 then a.m1 else 5000 end), m1=a.m1-5000 from a where a.m1>=0)select * from a
[解决办法]
递归方法
- SQL code
DECLARE @_salary INT,@_limitSalary INT,@_n INT,@_i INT,@_reminder INTSET @_salary=152000SET @_limitSalary=50000SET @_n=@_salary/@_limitSalarySET @_reminder=@_salary%@_limitSalaryIF (@_n<=1) SET @_n=1;WITH cte(empi,NAME,salary,n) AS ( SELECT 1,'liko',@_salary,@_n UNION ALL SELECT empi,NAME,CASE WHEN n>1 THEN @_limitSalary ELSE salary END,n-1 FROM cte WHERE n>0 UNION ALL SELECT empi,NAME,@_reminder,n-1 FROM cte WHERE n=0)SELECT * FROM cte WHERE salary<=50000