Sql 基于query-BQ中的旧列创建新列
下表一:Sql 基于query-BQ中的旧列创建新列,sql,google-bigquery,Sql,Google Bigquery,下表一: id | gained | init ----------------------- 1da | 56 | TRUE 1da | 56 | FALSE e4f | 23 | TRUE few | 23 | TRUE 新列New_应通过查询导出,逻辑应为: 如果init为true,则0结束 我想要的查询结果: id | gained | init | new_gained ----------------------------
id | gained | init
-----------------------
1da | 56 | TRUE
1da | 56 | FALSE
e4f | 23 | TRUE
few | 23 | TRUE
新列New_应通过查询导出,逻辑应为:
如果init为true,则0结束
我想要的查询结果:
id | gained | init | new_gained
-----------------------------------
1da | 56 | TRUE | 0
1da | 56 | FALSE | 56
e4f | 23 | TRUE | 0
few | 23 | TRUE | 0
不确定你的问题到底是什么,因为你在你的问题中有解决方案-无论如何-下面是你问的
#standardSQL
WITH `project.dataset.table` AS (
SELECT '1da' id, 56 gained, TRUE init UNION ALL
SELECT '1da', 56, FALSE UNION ALL
SELECT 'e4f', 23, TRUE UNION ALL
SELECT 'few', 23, TRUE
)
SELECT *,
CASE WHEN init THEN 0 ELSE gained END AS new_gained
FROM `project.dataset.table`
另一个选择是
#standardSQL
SELECT *,
IF(init, 0, gained) AS new_gained
FROM `project.dataset.table`
你认为哪个更快或更高效?@kudeh。从性能角度来看,它们是相同的。CASE是标准的SQL。