join - 加入表 B 并根据表 A 中特定列中的值获取不同列的值
问题描述
我想通过 ID 加入两个表。第一个表包含所有 ID 和一个列,其中列名来自另一个表。我用 case 语句做到了这一点,如果可行,但我有 50 个不同的列名,还有更多,所以我不想使用 case 语句。我能做些什么呢?我正在使用雪花,这就是我所拥有的:
表 A:
表 B:
创建表语句:
CREATE OR REPLACE TABLE
TABLE_A
(id INTEGER,
column_name VARCHAR);
INSERT INTO
test.TABLE_A
(id,column_name)
VALUES
(1,'column_1'),
(1,'column_2'),
(2,'column_2');
---------------------
CREATE OR REPLACE TABLE
TABLE_B
(id INTEGER,
column_1 VARCHAR,
column_2 VARCHAR);
INSERT INTO
TABLE_B
(id,column_1,column_2)
VALUES
(1,'value_1_1','value_1_2'),
(2,'value_2_1','value_2_2');
这就是我所做的,但正如我所说,这不利于维护:
SELECT
a.ID,
a.COLUMN_NAME,
CASE
WHEN a.column_name = 'column_1'
THEN b.column_1
WHEN a.column_name = 'column_2'
THEN b.column_2
ELSE ''
END AS result
FROM
TABLE_A a
JOIN
TABLE_B b
ON
a.id = b.id
这给了我以下结果:
如何在不使用 case 语句或将字符串键入任何条件的情况下获得此结果?
解决方案
推荐阅读
- react-native - 创建反应本机应用程序类型的问题
- elasticsearch - 如何在 Kibana 的索引模式中更新 timeFieldName
- docker - 无法创建 HyperLedger 网络
- c++ - GCC/Clang 中这个奇怪的表达是什么?
- javascript - tofixed(2) 函数按名称应用于 html 类
- python - ValueError:在权重中检测到 NaN、inf 或无效值,估计不可行
- html - 如何调整使用 css 属性边框图像应用的拉伸图像的图像质量?
- python - 如何使用 Django/Python 获取 Google Cloud 上的 Postgres 数据库列表
- python - 根据另一个数据框中日期之间的范围合并熊猫数据框
- python - 使用 Django 将图像保存在数据库中,给出错误“具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()”