11

我正在尝试运行类似于此处回答的查询, SQL Selecting multiple sums?

SELECT  SUM(CASE WHEN order_date >= '01/01/09' THEN quantity ELSE 0 END) AS items_sold_since_date,
    SUM(quantity) AS items_sold_total,
    product_ID
FROM    Sales
GROUP BY product_ID

但如果我尝试这样做,我会收到错误消息

"message": "Unrecognized function CASE".

如果我尝试更简单的方法(来自 sql 教程),

SELECT CASE 1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END;

然后我得到

"message": "searched case expression not supported at: 1.8 - 1.65".

我将在黑暗中大胆尝试,并假设 SQL CASE 函数总体上不支持 BigQuery,但我真的希望我错了,因为它会根据我想要的报告查询产生很大的不同跑步。

4

2 回答 2

31

2013 年更新:BigQuery 支持 CASE:

SELECT CASE WHEN x=1 THEN 'one' WHEN x=2 THEN 'two' ELSE 'more' END 
FROM (SELECT 1 AS x) 

'one'
于 2013-11-22T01:56:03.437 回答
6

在 BigQuery 中执行此操作的方法是使用 if(test,then,else) 函数。例如: SELECT sum(if (revision_id > 10, num_characters, 0)) FROM [publicdata:samples.wikipedia] 或类似于您的第二个查询:

SELECT if (revision_id == 1, 'one', (if (revision_id == 2, 'two', 'more'))) FROM [publicdata:samples.wikipedia] limit 100

于 2012-07-25T16:19:27.987 回答