如何根据匹配的列变量合并行

时间:2019-05-19 23:03:23

标签: sql oracle

这是一个巨大的查询,但是我有一个用于理解的子示例。我事先道歉,这是我第一次问自己的业余技能问题。

我在输出中有两行。有很多列,但一次只有一行(总是如此)中只有三列有数据,其余为空。我如何合并这两行,因为它们在两个列中共享一个公共变量(即ID和Pass_numb相同,告诉我我希望将它们合并)?

从本质上讲,两行如何合并并填充空值?请记住,这个简单的结果/示例已经是其他查询的输出。

这种简单的视觉效果是子查询的结果

Pass_numb   ID_1      Restriction_1     Pass_numb_2  ID_2     Restriction_2
-----       -----     --------------    -----        ----     --------------
NULL        NULL      NULL              1            1000     ENL
1           10000     LS                NULL         NULL     NULL

我之所以寻求概念性帮助,是因为我不知道如何在不打字的情况下准确地解释我所追求的。任何一般性建议或指向特定主题资源的内容都将是不错的选择。

我希望从上面的简单示例中看到以下内容:

Pass_numb   ID_1      Restriction_1     Pass_numb_2  ID_2     Restriction_2
-----       -----     --------------    -----        ----     --------------
1           10000     LS                1            1000     ENL

非常感谢任何人可以伸出援手或带领我到某个地方!

1 个答案:

答案 0 :(得分:0)

在此示例中,您可以使用聚合:

select max(Pass_numb) as Pass_numb,
       max(ID_1) as ID_1,
       max(Restriction_1) as Restriction_1,
       max(Pass_numb_2) as Pass_numb_2,
       max(ID_2) as ID_2
from t
group by coalesce(Pass_numb, Pass_numb_2);

也就是说,可能有一种方法可以修复子查询,因此它不会这样做。但是,如果很复杂,则可能需要重写很多代码。