【发布时间】:2019-06-24 15:08:11
【问题描述】:
我有一张用户收入表,我希望根据该收入计算他们的所得税百分比。问题是每个等级的税率不同,例如:
MinLimit| MaxLimit| TaxRate
0 | 14000 | 10.50
14001 | 48000 | 17.50
48001 | 70000 | 30.00
70001 | 1000000 | 33.00
所以如果一个人的收入是49,000,那么他们将被征税如下:
14000 * 0.1050 = 1470
34000 * 0.1750 = 5950 (34,000 is income between 14k -48k)
1000 * 0.30 = 300 (1000 is remaining income)
total = 1470 + 5950 + 300 = 7720
我在 SQL Server 2017 Express 上运行。我尝试过运行链式 CASE-WHEN 语句,即
CASE WHEN
THEN
WHEN
THEN
and so on...
但我可以弄清楚如何添加减去剩余金额的逻辑。请在下面找到我的代码。
SELECT 'emp_name' AS 'Director',
SUM(ABS([Transaction Amount])) AS 'INCOME',
CASE WHEN (SUM(ABS([Transaction Amount])) < 14000)
THEN ((SUM(ABS([Transaction Amount])) - 14000) * 0.1050)
WHEN (SUM(ABS([Transaction Amount])) > 14000 and (SUM(ABS([Transaction Amount])) < 48001))
THEN (((SUM(ABS([Transaction Amount])) - 14000) * 0.1050) - 48000) * 0.1750 end AS 'Income Tax'
FROM Transactions
编辑 1: 输入数据:
Transaction Type| PAYEE | Transaction Amount
DEBIT | DEBIT | -184.00
CREDIT | CREDIT | 4000.00
...
输出数据:
Director | INCOME | Income Tax
emp_name | 45100.00| NULL
请让我知道我哪里出错了,或者我的想法是否不正确。
【问题讨论】:
-
能不能写下输入数据和输出数据?
-
@StepUp 添加输入/输出 :)
标签: sql-server tsql case aggregate-functions