将基于时间戳的3个表组合到一个新表中

时间:2013-12-04 15:34:22

标签: sql sql-server

我有三个包含不同数据的表。所有表都有DATETIME时间戳。我想创建一个新表,其中某个时间戳的所有数据都存储在一行中。

因此所有表都有一列“timestamp”,所有表都有不同的列。合并后,我希望有一个表再次“timestamp”,并且所有表的列都在一行中收集。

我在MS-SQL

工作

1 个答案:

答案 0 :(得分:2)

如果其中一个表具有您可以执行的所有时间戳:

SELECT *
FROM t1
LEFT JOIN t2 ON t1.timestamp = t2.timestamp
LEFT JOIN t3 ON t3.timestamp = t1.timestamp

否则你可能需要做类似的事情:

SELECT t1.*,t2.*.t3.*
FROM (SELECT timestamp
      FROM t1
      UNION
      SELECT timestamp
      FROM t2
      UNION
      SELECT timestamp
      FROM t3
) t0
LEFT JOIN t1 ON t0.timestamp = t1.timestamp
LEFT JOIN t2 ON t0.timestamp = t2.timestamp
LEFT JOIN t3 ON t0.timestamp = t3.timestamp

第一部分获取所有可能的时间戳,并使用3个表左键连接它们。您可以按一下选定的列以不返回重复的时间戳列