加入具有略微不同数据的三个表时,联合问题

时间:2015-03-02 23:05:40

标签: sql-server

我有三张桌子正在尝试加入。这三个都有以下重要的栏目:

StartTime | EndTime | ChannelCode | Data

我们会调用表livelegacybackup

旧版和备份表以2分钟的块为压缩数据。我已经想出如何通过union和使用distinct来从这两个表中获取正确的数据。

Table live在最多1分钟的块中有未压缩的数据。

另一个进程每隔2分钟从Live中获取数据,压缩并将其置于遗留系统中。然后,在稍后的时间(可能长达23小时后),数据将按原样复制到备份。

这不太理想,但由于种种原因,我无法改变设计。

我想弄清楚该怎么做:

如何从每个表中检索上面列出的所有列,但在给定时间段内只有一个条目?

到目前为止,我有:

SELECT DISTINCT StartTime, EndTime, ChannelCode, Data
FROM (SELECT StartTime, EndTime, ChannelCode, Data
    FROM Legacy
    WHERE StartTime < @EndTime

    UNION ALL

    SELECT StartTime, EndTime, ChannelCode, Data
    FROM Backup
    WHERE StartTime < @EndTime
) AS Data
WHERE Data.EndTime > @StartTime
ORDER BY ChannelCode, StartTime

旧表和备份表的示例数据:

2015-03-01 04:04:39.740 | 2015-03-01 04:06:39.740 | 516 | <compressed binary data>

直播表的示例数据:

2015-03-01 04:03:39.740 | 2015-03-01 04:04:39.740 | 516 | <uncompressed binary data>

不幸的是,由于时间跨度不同,我不知道从哪里开始。任何帮助将不胜感激!

0 个答案:

没有答案