db2casewhen用法
DB2中的CASE WHEN用法是一种条件语句,可用于在查询语句中根据条件执行不同的操作。它类似于其他编程语言中的switch语句或if-else语句。CASE WHEN语句在SELECT、UPDATE或DELETE语句中都可使用。
基本语法如下:
CASE WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END
具体来说,CASEWHEN语句根据一系列条件逐个检查,并返回与第一个满足条件的结果相关
联的表达式。如果没有条件满足,将返回ELSE子句中定义的结果。如果没有ELSE子句,将返回空值。
下面是一个简单的例子,根据分数等级来计算学生的等级:
SELECT student_name,
score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE'F'
END AS grade
FROM students
这将返回包含学生姓名、分数和等级的结果集。
除了单纯的等值比较,CASEWHEN语句还支持其他条件比较运算符,例如大于、小于、不等于等。例如,我们可以使用CASEWHEN语句根据客户的购买金额计算折扣率:
SELECT customer_name,
order_amount,
CASE
WHEN order_amount >= 1000 THEN order_amount * 0.1
WHEN order_amount >= 500 THEN order_amount * 0.05
ELSE order_amount
END AS discountswitch语句具体例子
FROM customers
在这个例子中,如果订单金额大于等于1000,则应用10%的折扣;如果订单金额大于等于500,则应用5%的折扣;其他情况下,不应用折扣。
CASEWHEN语句还可以与其他函数和表达式结合使用。例如,我们可以使用CASEWHEN语句根据员工的工作年限计算出基本工资:
SELECT employee_name,
hire_date,
CASE
WHEN YEAR(CURRENT_DATE) - YEAR(hire_date) >= 5 THEN 3000
WHEN YEAR(CURRENT_DATE) - YEAR(hire_date) >= 3 THEN 2000
ELSE1000
END AS base_salary
FROM employees
在这个例子中,如果员工的工作年限大于等于5年,则基本工资为3000;如果工作年限大于等于3年,则基本工资为2000;其他情况下,基本工资为1000。
除了单个CASEWHEN语句外,还可以在查询语句中嵌套多个CASEWHEN语句。这可以用于处理多个条件并返回不同的结果。例如,我们可以使用嵌套CASEWHEN语句根据不同条件计算优惠金额:
SELECT customer_name,
order_amount,
CASE
WHEN order_amount >= 1000 THEN order_amount * 0.1
WHEN order_amount >= 500 THEN order_amount * 0.05
ELSECASE
WHEN order_amount < 100 THEN 0
ELSE order_amount * 0.02
END
END AS discount
FROM customers
在这个例子中,如果订单金额大于等于1000,则应用10%的折扣;如果订单金额大于等于500,则应用5%的折扣;如果订单金额小于100,则不应用折扣;其他情况下,应用2%的折扣。
总体而言,DB2中的CASEWHEN语句是一种非常有用的条件语句,可用于根据不同的条件执行不同的操作。它可以与其他函数和表达式结合使用,提供了很大的灵活性和功能。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论