BigQuery CASE WHSE ELSE语句不完整的结果

Mo'*_*ers 6 google-bigquery

在BigQuery中使用大型case-when-else语句时,结果不会累加.

有时我们会得到10个桶但不是全部.通常我们按顺序得到几个桶,比如1-8,然后我们会期望它返回桶9但它没有,它返回15或者其他东西.

请注意,这只是一个示例,我们的实际查询有超过100个WHEN语句.在这种情况下,我们可能会获得25个桶,然后它会在列表中的某个位置"重新启动".

"查询参考"未声明WHEN语句的最大数量.那可能导致这种行为的原因是什么?

SELECT Count(Items) AS item_count, 
CASE 
WHEN (a >= 0 AND a < 50) THEN 1 
WHEN (a >= 50 AND a < 100) THEN 2 
WHEN (a >= 100 AND a < 150) THEN 3 
WHEN (a >= 150 AND a < 200) THEN 4 
WHEN (a >= 200 AND a < 250) THEN 5 
WHEN (a >= 250 AND a < 300) THEN 6 
WHEN (a >= 300 AND a < 350) THEN 7 
WHEN (a >= 350 AND a < 400) THEN 8 
WHEN (a >= 400 AND a < 500) THEN 9 
WHEN (b >= 100 AND b < 200) THEN 10 
WHEN (b >= 200 AND b < 300) THEN 11 
WHEN (b >= 300 AND b < 400) THEN 12 
WHEN (b >= 400 AND b < 500) THEN 13 
WHEN (b >= 500 AND b < 1000) THEN 14 
WHEN (b >= 1000 AND b < 2000) THEN 15 
ELSE -1
END AS bucket
FROM [dataset1.sometable]
GROUP BY bucket
Run Code Online (Sandbox Code Playgroud)

Mo'*_*ers 5

事实证明,在我们的案例中,不止一个 when 可以为真,这会影响结果。CASE-WHEN-ELSE 语句无法处理这个问题。