计算每个 sessionID 的税
Calculate tax per sessionID
我有以下 table“Customer_Trans”并包含以下列:
Date
CustomerID
SessionID
Amount
9/9/2020
485789
23
0,4
9/9/2020
485789
24
620
9/9/2020
485789
25
60
我想按如下方式计算每个金额的税金:
对于前 100 美元,我的税率为 0%,从 100,01 美元到 500 美元,税率需要为 15%,从 500,01 美元及以上,税率需要为 20%。
例如,第二行我有 620 美元,我必须减去前 100 美元(0% 税),我将有 520 美元。
对于 500 美元的金额,需要缴纳 15% (500 * 0,15) 的税金,其余金额为 20 美元的,需要缴纳 20% (20 * 0,2) 的税金。
我想避免 CTE(常见的 table 表达式),但如果不是,我会这样做。
尝试运行这个
DROP TABLE IF EXISTS #Customer_Trans
CREATE TABLE #Customer_Trans
(
[Date] date NULL,
CustomerID int NULL,
SessionID INT NULL,
Amount DECIMAL(18,4) NULL,
Tier1 DECIMAL(18,4) NULL,
Tier2 DECIMAL(18,4) NULL
)
INSERT INTO #Customer_Trans (Date,CustomerID,SessionID,Amount)
VALUES('9/9/2020',485789,23,0.4)
,('9/9/2020',485789,24,620)
,('9/9/2020',485789,25,60)
,('9/9/2020',485789,26,160.94)
,('9/9/2020',485789,27,502.24)
SELECT
Date,CustomerID,SessionID,Amount,
CASE WHEN Amount > 500 THEN (.15*400)+(.2*(Amount-500)) ELSE 0 END AS Tier1,
CASE WHEN Amount > 100 AND Amount<500.0001 THEN (.15*(Amount-100)) ELSE 0 END AS Tier2
FROM #Customer_Trans
附带说明一下,在你的描述中,我认为你有一个缺陷,因为 620 交易将是
400 * 15% + 120 * 20%
由于您指定的税收等级仅为 100 和 500,因此 15% 仅吸引 100.01 和 500.00 之间的值,对于 620 的金额,最终 120 的税率为 20%。
我有以下 table“Customer_Trans”并包含以下列:
Date | CustomerID | SessionID | Amount |
---|---|---|---|
9/9/2020 | 485789 | 23 | 0,4 |
9/9/2020 | 485789 | 24 | 620 |
9/9/2020 | 485789 | 25 | 60 |
我想按如下方式计算每个金额的税金: 对于前 100 美元,我的税率为 0%,从 100,01 美元到 500 美元,税率需要为 15%,从 500,01 美元及以上,税率需要为 20%。
例如,第二行我有 620 美元,我必须减去前 100 美元(0% 税),我将有 520 美元。
对于 500 美元的金额,需要缴纳 15% (500 * 0,15) 的税金,其余金额为 20 美元的,需要缴纳 20% (20 * 0,2) 的税金。
我想避免 CTE(常见的 table 表达式),但如果不是,我会这样做。
尝试运行这个
DROP TABLE IF EXISTS #Customer_Trans
CREATE TABLE #Customer_Trans
(
[Date] date NULL,
CustomerID int NULL,
SessionID INT NULL,
Amount DECIMAL(18,4) NULL,
Tier1 DECIMAL(18,4) NULL,
Tier2 DECIMAL(18,4) NULL
)
INSERT INTO #Customer_Trans (Date,CustomerID,SessionID,Amount)
VALUES('9/9/2020',485789,23,0.4)
,('9/9/2020',485789,24,620)
,('9/9/2020',485789,25,60)
,('9/9/2020',485789,26,160.94)
,('9/9/2020',485789,27,502.24)
SELECT
Date,CustomerID,SessionID,Amount,
CASE WHEN Amount > 500 THEN (.15*400)+(.2*(Amount-500)) ELSE 0 END AS Tier1,
CASE WHEN Amount > 100 AND Amount<500.0001 THEN (.15*(Amount-100)) ELSE 0 END AS Tier2
FROM #Customer_Trans
附带说明一下,在你的描述中,我认为你有一个缺陷,因为 620 交易将是 400 * 15% + 120 * 20% 由于您指定的税收等级仅为 100 和 500,因此 15% 仅吸引 100.01 和 500.00 之间的值,对于 620 的金额,最终 120 的税率为 20%。