Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 连接三个数据稍有不同的表时出现union问题_Sql Server - Fatal编程技术网

Sql server 连接三个数据稍有不同的表时出现union问题

Sql server 连接三个数据稍有不同的表时出现union问题,sql-server,Sql Server,我正在尝试加入三个表。这三个栏目都有以下重要栏目: StartTime | EndTime | ChannelCode | Data 我们将称这些表为live、legacy和backup 旧表和备份表将数据压缩为2分钟的数据块。我已经找到了如何通过union和distinct从这两个表中获取正确的数据 Table live在最多1分钟的数据块中包含未压缩的数据 另一个进程每2分钟从Live获取一次数据,对其进行压缩并将其放在legacy中。然后,在以后的某个时间(可能是23小时后),数据会按原

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

StartTime | EndTime | ChannelCode | Data
我们将称这些表为live、legacy和backup

旧表和备份表将数据压缩为2分钟的数据块。我已经找到了如何通过union和distinct从这两个表中获取正确的数据

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

另一个进程每2分钟从Live获取一次数据,对其进行压缩并将其放在legacy中。然后,在以后的某个时间(可能是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>

不幸的是,我不知道从这里走到哪里,因为时间跨度是不同的。任何帮助都将不胜感激

您必须对活动数据(只有一个表)的数据进行格式化,以匹配其他两个表,或者对其他两个表进行格式化,以匹配活动表,然后按现有方式进行联合。您可以发布三个表中的样本行数据吗?我已经将样本数据添加到原始问题中。不幸的是,它看起来格式不太好。