Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于query-BQ中的旧列创建新列_Sql_Google Bigquery - Fatal编程技术网

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。