SQL_Case 以及何时
SQL_Case and When
我有一个数据集,我需要在其中计算最低应付金额。我使用了下面的代码
SELECT *, Sales - Reversal AS Net_Sale, charge1 - charge1_rev AS Net_Fee1,
CASE WHEN Net_Sale < 500 THEN Net_Sale
ELSE 0.1*Net_Sale END
AS Min_Sale_amt,
Min_Sale_amt + Net_Fee1 AS Min_AmountDue
FROM Table
目的是将最低应付金额设为 Rs。如果净销售额低于 500 卢比。 500,如果净销售额超过 Rs。 500 那么我需要计算净销售额的 10%。
示例数据供参考
create table sales(
sales int,
Reversal int,
charge1 int,
charge1_rev int
);
Insert into sales values(1000,200,10,0);
Insert into sales values(495,0,10,0);
出于某种原因,我无法获得结果。
非常感谢您的帮助!
首先计算 CTE 中的别名,然后对其进行子查询以获得您想要的结果:
WITH cte AS (
SELECT *, Sales - Reversal AS Net_Sale,
charge1 - charge1_rev AS Net_Fee1,
CASE WHEN Sales - Reversal < 500
THEN Sales - Reversal
ELSE 0.1*(Sales - Reversal) END AS Min_Sale_amt
FROM sales
)
SELECT *, Min_Sale_amt + Net_Fee1 AS Min_AmountDue
FROM cte;
我有一个数据集,我需要在其中计算最低应付金额。我使用了下面的代码
SELECT *, Sales - Reversal AS Net_Sale, charge1 - charge1_rev AS Net_Fee1,
CASE WHEN Net_Sale < 500 THEN Net_Sale
ELSE 0.1*Net_Sale END
AS Min_Sale_amt,
Min_Sale_amt + Net_Fee1 AS Min_AmountDue
FROM Table
目的是将最低应付金额设为 Rs。如果净销售额低于 500 卢比。 500,如果净销售额超过 Rs。 500 那么我需要计算净销售额的 10%。
示例数据供参考
create table sales(
sales int,
Reversal int,
charge1 int,
charge1_rev int
);
Insert into sales values(1000,200,10,0);
Insert into sales values(495,0,10,0);
出于某种原因,我无法获得结果。 非常感谢您的帮助!
首先计算 CTE 中的别名,然后对其进行子查询以获得您想要的结果:
WITH cte AS (
SELECT *, Sales - Reversal AS Net_Sale,
charge1 - charge1_rev AS Net_Fee1,
CASE WHEN Sales - Reversal < 500
THEN Sales - Reversal
ELSE 0.1*(Sales - Reversal) END AS Min_Sale_amt
FROM sales
)
SELECT *, Min_Sale_amt + Net_Fee1 AS Min_AmountDue
FROM cte;