BigQuery 是否支持嵌套的 CASE 语句?
Does BigQuery support nested CASE statements?
我有一个类似这样的要求:
If X <0.01 then Y=1, Z=2
If X>=0.01 then
If <another_expression> then Y=3, Z=4
If <another_expression> then Y=5, Z=6
等等,其中 'Y' 和 'Z' 是列别名。
我看过使用 CASE 语句,但它似乎不支持 嵌套 CASE 语句。
我是不是遗漏了什么明显的东西?还是有更好的实现方式?
这个怎么样?只是快速猜测。
SELECT
X,
REGEXP_EXTRACT(result, r'(\d+),') AS Y,
REGEXP_EXTRACT(result, r',(\d+)') AS Z
FROM (
SELECT
X,
CASE WHEN X <0.01 THEN '1,2'
WHEN X >= 0.01 THEN (
CASE WHEN X < 0.1 THEN '3,4'
WHEN X >= 0.1 THEN '5,6' END
) END AS result
FROM (SELECT 0.2 AS X)
)
我有一个类似这样的要求:
If X <0.01 then Y=1, Z=2
If X>=0.01 then
If <another_expression> then Y=3, Z=4
If <another_expression> then Y=5, Z=6
等等,其中 'Y' 和 'Z' 是列别名。
我看过使用 CASE 语句,但它似乎不支持 嵌套 CASE 语句。
我是不是遗漏了什么明显的东西?还是有更好的实现方式?
这个怎么样?只是快速猜测。
SELECT
X,
REGEXP_EXTRACT(result, r'(\d+),') AS Y,
REGEXP_EXTRACT(result, r',(\d+)') AS Z
FROM (
SELECT
X,
CASE WHEN X <0.01 THEN '1,2'
WHEN X >= 0.01 THEN (
CASE WHEN X < 0.1 THEN '3,4'
WHEN X >= 0.1 THEN '5,6' END
) END AS result
FROM (SELECT 0.2 AS X)
)