我正试图找到一种替代方法来使用我写的存储过程的全外联接。这是场景。这是一个完整的外部连接需要吗?
两张大多数无关的数据表,表示需要发生的事件。这些事件需要按时间顺序进行处理,并且这两个表都有一个日期时间列。所以我需要得到一个单独的表,充当按照datetime排序的所有这些事件的列表(这两个日期时间列需要混合在一起)。
一个小问题:有时两个表中的事件会有关系,在这种情况下,无论日期时间如何,来自表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
您的意思是来自表A的事件需要先行,而不管日期时间,您在A事件之后插入B事件,还是根本不?你能否给我们一些测试数据,例如A中的3个事件,B中的3个事件,以及你需要的结果? – 2011-03-01 13:59:23