【发布时间】:2022-12-12 09:31:45
【问题描述】:
我有两个表 t1 和 t2。我需要加入它们并在 t2.inact = ''(为空)和 t2.objval = 1000 时将 t1 中的阻塞列值设置为 'X'。这两个表都由 obid 连接。
表 t1:
| obid | blocked |
|---|---|
| 1 | |
| 2 |
表 t2:
| obid | inact | objval |
|---|---|---|
| 1 | 1000 | |
| 2 | 2000 |
预期输出:表 t1 现在应该如下所示
| obid | blocked |
|---|---|
| 1 | X |
| 2 |
在 bigquery 中,据说不可能将 WITH CTE 与更新语句一起使用,这是我的第一次尝试。其他可能的方法是什么?下面是我对 CASE 的另一个 SQL 尝试,这是创建一个名为 blocked 的新列...但要求是在已存在的列中填充数据 blocked。
WITH abc AS(
SELECT obid,blocked
FROM table1),
def AS (
SELECT obid,inact,objval,
FROM table2
WHERE objval = '1000')
SELECT CASE WHEN t2.inact = '' THEN 'X'
ELSE '' END as blocked
FROM abc t1
JOIN def t2
ON t2.obid = t1.obid
任何帮助表示赞赏!
【问题讨论】:
标签: google-bigquery