加入两个具有不同列的类似表

时间:2017-11-02 21:24:01

标签: sql

我们有两个表,一个显示流程的结果,另一个显示错误或其他事件。有些列可以合并,而其他列则无法合并。每个表中都有唯一的列,因此我无法使用UNION ALL。

例如,我有以下列(还有更多但你明白了):

EventID | DateTime | Station | ErrMsg

ResultID | DateTime | Station | MatNum | SerialNum

因此,每个示例表中的前三列可以合并,但其他列需要自己的列。

这里的想法是用日期/时间覆盖错误和顺序的结果,以便我们可以看到是否有任何处理步骤导致错误。

我尝试过不同的联盟,工会等,但并没有得到我想要的东西。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这在技术上是有效的,如果这真的是你想要的输出......

Select
EventID, DateTime, Station, ErrMsg, NULL
from Events
UNION ALL
Select
ResultID, DateTime, Station, MatNum, SerialNum
from Results

答案 1 :(得分:0)

由于前三列具有兼容的数据类型,而其他列不需要为每个不兼容的列分隔列。我还会添加一个鉴别器列,以便您可以立即告诉该行来自哪个数据源:

Select
'E' src, EventID,  DateTime, Station, NULL,   NULL,      ErrMsg
from Events
UNION ALL
Select
'R' src, ResultID, DateTime, Station, MatNum, SerialNum, NULL
from Results