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;