在Oracle中,您可以使用CASE
語(yǔ)句來創(chuàng)建條件表達(dá)式。CASE
語(yǔ)句允許您根據(jù)一個(gè)或多個(gè)條件對(duì)數(shù)據(jù)進(jìn)行分類,并返回相應(yīng)的值。以下是一個(gè)基本的CASE
語(yǔ)句的語(yǔ)法:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END;
在這個(gè)結(jié)構(gòu)中:
condition1
, condition2
, … 是要測(cè)試的條件。result1
, result2
, … 是當(dāng)條件為真時(shí)返回的值。default_result
是當(dāng)所有條件都為假時(shí)返回的值。下面是一個(gè)具體的例子。假設(shè)我們有一個(gè)名為employees
的表,其中包含department
(部門)和salary
(薪水)兩個(gè)字段。我們想要找出每個(gè)部門的平均薪水,但只顯示那些平均薪水高于整個(gè)公司平均薪水的部門。
SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > (
SELECT AVG(salary) FROM employees
);
在這個(gè)查詢中,我們使用了子查詢來計(jì)算整個(gè)公司的平均薪水,并將其與每個(gè)部門的平均薪水進(jìn)行比較。但是,這個(gè)查詢并沒有使用條件表達(dá)式。要使用條件表達(dá)式,我們可以稍微修改一下查詢:
SELECT department,
AVG(salary) AS average_salary,
CASE
WHEN AVG(salary) > (SELECT AVG(salary) FROM employees) THEN 'High'
ELSE 'Low'
END AS salary_level
FROM employees
GROUP BY department;
在這個(gè)修改后的查詢中,我們添加了一個(gè)CASE
表達(dá)式來根據(jù)部門的平均薪水是否高于整個(gè)公司的平均薪水來標(biāo)記該部門的薪水水平。如果部門的平均薪水高于整個(gè)公司的平均薪水,則salary_level
列將顯示’High’;否則,它將顯示’Low’。