首页 > 解决方案 > 加入表 B 并根据表 A 中特定列中的值获取不同列的值

问题描述

我想通过 ID 加入两个表。第一个表包含所有 ID 和一个列,其中列名来自另一个表。我用 case 语句做到了这一点,如果可行,但我有 50 个不同的列名,还有更多,所以我不想使用 case 语句。我能做些什么呢?我正在使用雪花,这就是我所拥有的:

表 A:

表A

表 B:

表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 语句或将字符串键入任何条件的情况下获得此结果?

标签: joinsnowflake-cloud-data-platform

解决方案


推荐阅读