简体中文
Appearance
简体中文
Appearance
CASE 语句类似于编程语言中的 IF-THEN-ELSE 结构,它使你能够根据条件返回特定值。
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
通过 WHEN condition THEN result
可以将满足给定条件的行转换为给定的值。使用 ELSE
可以指定默认值。
CASE 语句可以在 SELECT、WHERE、GROUP BY、ORDER BY 等多个语句中使用。
-- 根据 value 列的取值返回不同的值
SELECT
CASE
WHEN value < 100 THEN 1
WHEN value > 100 and value <= 200 THEN 2
ELSE 3
END
FROM t
-- 对 CASE 语句返回的值进行聚合
SELECT
SUM(CASE WHEN value < 100 THEN 1 ELSE 0 END)
FROM t
-- WHERE 语句中使用 CASE
SELECT * FROM t
WHERE flag = (CASE WHEN value < 100 THEN 1 ELSE 0 END)
-- HAVING 语句中使用 CASE
SELECT sum(flag) FROM t
GROUP BY flag HAVING flag = (CASE WHEN value < 100 THEN 1 ELSE 0 END)
SELECT
sum(flag),
CASE WHEN value < 100 THEN 1 ELSE 0 AS v
FROM t
GROUP BY v;
SELECT * FROM t
ORDER BY CASE WHEN value < 100 THEN 1 ELSE 0 END