【问题标题】:Combine 3 tables based on timestamp into one new table将基于时间戳的 3 个表合并为一个新表
【发布时间】:2013-12-04 15:34:22
【问题描述】:

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

所以所有表都有一个“时间戳”列,所有表都有不同的列。合并后,我希望一张表再次带有“时间戳”,并将所有表的列收集在一行中。

我正在使用 MS-SQL

【问题讨论】:

标签: sql sql-server


【解决方案1】:

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

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 个表连接起来。您可以稍微按摩一下选择的列以不返回重复的时间戳列

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2021-01-26
    • 2017-02-25
    • 2016-04-18
    • 1970-01-01
    相关资源
    最近更新 更多