pgsql case when多重条件
时间: 2024-11-09 09:26:40 浏览: 23
在PostgreSQL中,`CASE WHEN` 语句用于根据特定条件返回不同的值。它允许你在查询中设置一系列条件,并对每个条件的结果指定不同的表达式。当你有多个条件需要检查时,可以使用 `WHEN` 子句逐个列出它们,用 `AND` 或 `OR` 连接。基本语法如下:
```sql
SELECT column_name,
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
[ ... ]
ELSE default_result
END AS new_column_name
FROM table_name;
```
例如,如果你有一个销售表,你想计算每个订单的折扣金额,根据订单状态(新、已发货、已完成):
```sql
SELECT order_id,
CASE
WHEN status = 'New' THEN discount * 0.95 -- 新订单95%折扣
WHEN status = 'Shipped' THEN discount -- 已发货原价
WHEN status = 'Completed' THEN 0 -- 完成无折扣
ELSE 0 -- 其他情况设为0
END AS discounted_amount
FROM sales;
```
在这个例子中,如果有符合条件的,`CASE` 会返回相应的结果;如果没有匹配到,则会执行 `ELSE` 后面的默认值。
阅读全文