我想检查其中一列中的默认值,并用 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
您可以将表与包含 (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