如何转置列以在bigquery中设置2个默认值

问题描述 投票:0回答:1

我想检查其中一列中的默认值,并用 2 个默认值填充该列,其中该特定列应使用这 2 个默认值转置为 2 行。有人可以让我知道如何实现这个bigquery吗?

我的情况如下,

表结构:

CREATE TABLE db.QUESTIONS
(
  qst_no string,
  qst_val string
);

逻辑- IF QST_NO = '100' THEN 将 qst_val 转置为 2 行 AS 'Y' , 'N' ELSE QST_NO

我尝试过的查询:-

SELECT QST_NO, CASE WHEN QST_NO = '100' THEN 'Y','N' ELSE QST_NO END AS QST_VAL 
FROM DB.QUESTIONS;

我希望数据是什么样子:-

QST_NO  QST_VAL
------  ------
100      Y
100      N
101      101
102      102
google-bigquery
1个回答
0
投票

您可以将表与包含 (100, 'Y'), (100, 'N') 的数据集连接起来,将值为 100 的行拆分为两个单独的行:

SELECT q.QST_NO, COALESCE(s.QST_VAL, q.QST_VAL) AS QST_VAL
FROM QUESTIONS q
LEFT JOIN (
    SELECT 100  AS QST_NO,   'Y' AS QST_VAL UNION ALL
    SELECT 100, 'N'
) AS s ON s.QST_NO = q.QST_NO;

对于这个数据集:

QST_NO  QST_VAL
------  ------
100      100
101      101
102      102

结果 :

QST_NO  QST_VAL
------  ------
100      Y
100      N
101      101
102      102
© www.soinside.com 2019 - 2024. All rights reserved.