2012-07-25 27 views
5

Burada cevap ne gibi bir sorgu çalıştırmak çalışıyorum, SQL Selecting multiple sums?Google BigQuery VAKA fonksiyonu

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 

Fakat, şu hata mesajını

"message": "Unrecognized function CASE". 

olsun sonra

olsun

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

, (bir sql öğreticisindeki) çok daha basit

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

o esaslı farkın çok büyük yarattığıbölümlere çünkü karanlıkta vahşi bıçak almak ve SQL DURUM fonksiyonu genel olarak sadece BigQuery'ye desteklenmemektedir olduğunu kabul edecek, ama gerçekten ben yanılıyorum umut ediyorum rapor sorgularında çalıştırmak istiyorum.

+0

gerçekten değil VAKA fıkra https desteklediğini görünüyor: BigQuery DURUM destekler. google.com/bigquery/docs/query-reference – Yaroslav

+0

Evet, iyi kontrol ettim, ancak sürüm numaraları vermeleri, versiyonumun daha yeni bir sürüme geçebileceğimi düşündüğüm bir alan olduğunu düşünmeme yol açtı. o. Çok sinir bozucu, daha kolay ihtiyacım olan sorguları yapar. – seaders

+2

CASE şimdi destekleniyor, aşağıya bakın –

cevap

15

2013 güncelleme: // geliştiriciler:

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

'one' 
+1

Herkes için çok daha iyi bir yanıtla güncellediğiniz için teşekkürler şimdi onu arıyorum. Artık BigQuery ile çalışmıyorum, ama yine de gelecekte olabilirim ve yukarıdaki gibi daha fazla şey eklemek, onu daha çekici kılıyor. – seaders

5

BigQuery'de bunu yapmanın yolu if (test, then, else) işlevini kullanmaktır. Örneğin : SELECT sum(if (revision_id > 10, num_characters, 0)) FROM [publicdata:samples.wikipedia] veya ikinci sorguya benzer :

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

+0

Teşekkürler Ürdün, mükemmel çalıştı. – seaders

+0

2013 güncelleştirmesi: BigQuery aşağıdakileri destekler: SELECT CASE WHEN x = 1 SONRA 'one' xEN = 2 SONRA 'iki' ELSE 'daha' END FROM (SELECT 1 AS x) –