多列连接时如何构建连接条件?

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

我正在尝试将下面的 2 个表连接到多个列(通过 dbt 云进行大查询)。

t1 作为

id 2021_代码 2022_代码 2023_代码
P 1
2 3
R 4 5 6

t2 作为

代码 标签
1 A
2 B
3 C
4 D
5 E
6 F

对于 t1 中最后三列中的每个非空值,我希望在连接表中拥有一个具有唯一标签的不同行。

我期待下面的连接表。

id 代码 标签
P 1 A
2 B
3 C
R 4 D
R 5 E
R 6 F

我尝试了以下代码,但可以理解的是失败了。

从 t1 左连接 t2 中选择 id、代码、标签 2021_code = code 或 2022_code = code 或 2023_code = code

我的加入条件或方法显然需要修改。将不胜感激任何意见。

sql join google-bigquery dbt
1个回答
0
投票

您可以每次

JOIN
所需列上的表格并
UNION ALL
结果。

SELECT
    Id, 
    code,
    label
FROM t1

    JOIN t2 as [2021code]
        ON [2021code].code = [2021_code]

UNION ALL

SELECT
    Id, 
    code,
    label
FROM t1

    JOIN t2 as [2022code]
        ON [2022code].code = [2022_code]

UNION ALL

SELECT
    Id, 
    code,
    label
FROM t1

    JOIN t2 as [2023code]
        ON [2023code].code = [2023_code]
        

该代码适用于 MS SQL,但我相信您可以轻松地将该方法应用于大查询。请参阅 DB Fiddle 了解结果

© www.soinside.com 2019 - 2024. All rights reserved.