gpt4 book ai didi

sql - 连接两个具有不同数据的相同表结构

转载 作者:行者123 更新时间:2023-12-02 19:54:16 25 4
gpt4 key购买 nike

编辑:尝试 COALESCE 方法后,我现在看到一个问题,即每个瓦数类别的数据重复使用相同的数据。第 2 列是瓦数。 enter image description here

我创建了两个临时表,它们都具有完全相同的表结构。在这些表中,多个列可能具有相同的值,然后一些值列可能具有不同的数字。其中一些在一列中为 NULL,而在另一列中则不为 NULL。我想将所有值放在一起,并且在具有相同站点和工厂的行上,我希望将这些值连接起来。

这是两个表的外观以及我期望的结果的示例

表1:

SITE      PLANT          VALUE_1           VALUE 2
S1 P1 54 66
S1 P2 43 43

表 2:

SITE      PLANT         VALUE_1           VALUE_2
S1 P1 33 43
S2 P1 34 22

结果:

SITE      PLANT         t1_VALUE_1    t1_VALUE_2    t2_VALUE_1      t2_VALUE2
S1 P1 54 66 33 43
S1 P2 43 43 NULL NULL
S2 P1 NULL NULL 34 22

我最初的想法是完全加入。但是,这不起作用,因为在 select 语句中,您必须指定从何处获取列,例如站点和工厂;但同时选择 t1.site 和 t2.site 将生成两列。我得到的最接近的是下面的查询,但是只要 S2 中的结果具有不在 S1 中的站点和工厂,您就会收到 S1 和 S2 的空值。

SELECT t1.Site, t1.Plant, t1.Value_1, t1.Value_2, t2.Value_1, t2.Value_2 
FROM table1 t1
FULL JOIN table2 t2
ON t1.site = t2.site
AND t1.plant = t2.plant

最佳答案

完成这个查询需要两个技巧。第一个是 FULL JOIN。完全联接允许您组合两个表,并在不匹配联接条件时在任一表中插入空值。第二个是 COALESCE,它允许您从提供结果中该行记录的表中获取工厂和地点。

SELECT Coalesce(t1.Site,t2.Site) As Site, COALESCE(t1.Plant, t2.Plant) As Plant,
t1.Value_1 As t1_Value_1, t1.Value_2 As t1_Value_2,
t2.Value_1 As t2_Value_1, t2.Value_2 As t2_Value_2
FROM Table1 t1
FULL JOIN Table2 t2 ON t1.Site = t2.Site AND t1.Plant = t2.Plant

关于sql - 连接两个具有不同数据的相同表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com