[英]How to use if-else statement in Standard Bigquery?
如果我有一張像下面這樣的表:
|**Entry**-------**Name**--------**Date**------------------**Boolean**|
| 1.-----------Car-----------2019-12-01----------True|
| 2.-----------Car-----------2019-12-03----------False|
| 3.-----------Bus-----------2019-12-05----------False|
| 4.-----------Bus-----------2019-12-11----------False|
如果布爾列為真,或者布爾值為假,我想選擇具有不同名稱的行,然后選擇日期最早的行。 所以對於汽車條目,我想選擇第一行,因為它的布爾值為真(所以我可以忽略所有其他條目),對於總線條目,我想選擇最后一行,因為它的兩個布爾值都是假的,所以我想要選擇最早的日期(最接近當前日期)。
編輯:預期輸出
| 1.-----------汽車-----------2019-12-01-----------真|
| 4.-----------公交車-----------2019-12-11---------假|
下面是 BigQuery 標准 SQL
#standardSQL
SELECT AS VALUE ARRAY_AGG(t ORDER BY bool DESC, dt DESC LIMIT 1)[OFFSET(0)]
FROM `project.dataset.table` t
GROUP BY name
筆記; 這是基於您的評論中的“只有一排汽車和真實”......
如果適用於您問題中的示例數據,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT 'Car' name, '2019-12-01' dt, TRUE bool UNION ALL
SELECT 'Car', '2019-12-03', FALSE UNION ALL
SELECT 'Bus', '2019-12-05', FALSE UNION ALL
SELECT 'Bus', '2019-12-11', FALSE
)
SELECT AS VALUE ARRAY_AGG(t ORDER BY bool DESC, dt DESC LIMIT 1)[OFFSET(0)]
FROM `project.dataset.table` t
GROUP BY name
結果是
Row name dt bool
1 Car 2019-12-01 true
2 Bus 2019-12-11 false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.