我有三个包含不同数据的表。所有表都有DATETIME时间戳。我想创建一个新表,其中某个时间戳的所有数据都存储在一行中。
因此所有表都有一列“timestamp”,所有表都有不同的列。合并后,我希望有一个表再次“timestamp”,并且所有表的列都在一行中收集。
我在MS-SQL
工作答案 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个表左键连接它们。您可以按一下选定的列以不返回重复的时间戳列