【发布时间】:2011-07-06 12:52:03
【问题描述】:
我正在尝试为我正在编写的存储过程寻找一种替代方法来使用 FULL OUTER JOIN。这是场景。
代表需要发生的事件的两个大部分不相关的数据表。事件需要按时间顺序处理,并且两个表都有一个日期时间列。所以我需要一个表来作为所有这些按日期时间排序的事件的列表(这两个日期时间列需要混合在一起)。
一个小问题:有时两个表中的事件是相关的,在这种情况下,无论日期时间如何,表 A 中的事件都需要先发生。因此,如果 A 有 3 个事件,B 有 3 个事件,但 A 和 B 之间只有一个相关对,我想返回 5 行。如果有不相关的数据,就会有 NULL 数据(没关系,我使用 NULL 数据检查来确定下一步要做什么,即处理事件 A 或 B 等)
目前我所拥有的看起来像这样:
SELECT
CASE
WHEN A.EventDateTime IS NULL THEN B.EventDateTime
ELSE A.EventDateTime
END AS SortDateTime,
A.EventId,
B.EventId,
FROM A FULL OUTER JOIN B
ON A.RelatedData=B.RelatedData
ORDER BY SortDateTime
【问题讨论】:
-
event from Table A needs to go first regardless of the datetime是指在 A 事件之后插入 B 事件,还是根本不插入?您能否给我们一些测试数据,比如 A 中的 3 个事件,B 中的 3 个事件,以及您需要的结果?
标签: sql-server outer-join