我可以在 CASE 语句 PostgreSQL 中使用 'alias' AS
Can i use 'alias' AS in CASE Statement PostgreSQL
SELECT
id
, quantity
, unit_price
, (antity * unit_price) as price
CASE
WHEN quantity * unit_price > 5000 THEN (quantity * unit_price) * 0.2
WHEN quantity * unit_price > 3000 THEN (quantity * unit_price) * 0.15
ELSE null
END
AS discount
FROM OrderDetails;
我尝试在 CASE
中使用别名 price
但它不起作用。
在上面的代码中,我重复了 5 次 quantity * unit_price
。
是否存在更好的方法来实现此代码?
CASE语句有没有办法避免重复?
你可以使用 CTE
WITH CTE as (
SELECT
id
, quantity
, unit_price,
(antity * unit_price) as price
FROM OrderDetails
)
SELECT
id
, quantity
, unit_price
, price
CASE
WHEN price > 5000 THEN price * 0.2
WHEN price > 3000 THEN price * 0.15
ELSE null
END
AS discount
FROM OrderDetails;
SELECT
id
, quantity
, unit_price
, (antity * unit_price) as price
CASE
WHEN quantity * unit_price > 5000 THEN (quantity * unit_price) * 0.2
WHEN quantity * unit_price > 3000 THEN (quantity * unit_price) * 0.15
ELSE null
END
AS discount
FROM OrderDetails;
我尝试在 CASE
中使用别名 price
但它不起作用。
在上面的代码中,我重复了 5 次 quantity * unit_price
。
是否存在更好的方法来实现此代码?
CASE语句有没有办法避免重复?
你可以使用 CTE
WITH CTE as (
SELECT
id
, quantity
, unit_price,
(antity * unit_price) as price
FROM OrderDetails
)
SELECT
id
, quantity
, unit_price
, price
CASE
WHEN price > 5000 THEN price * 0.2
WHEN price > 3000 THEN price * 0.15
ELSE null
END
AS discount
FROM OrderDetails;