我正在尝试将下面的 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
我的加入条件或方法显然需要修改。将不胜感激任何意见。
您可以每次
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 了解结果。