/ / Kombiniere 3 Tabellen basierend auf dem Zeitstempel zu einer neuen Tabelle - sql, sql-server

Kombinieren Sie 3 Tabellen basierend auf dem Zeitstempel in einer neuen Tabelle - sql, sql-server

Ich habe drei Tabellen, die unterschiedliche Daten enthalten. Alle Tabellen haben einen DATETIME-Zeitstempel. Ich möchte eine neue Tabelle erstellen, in der alle Daten eines bestimmten Zeitstempels in einer einzigen Zeile gespeichert sind.

So haben alle Tabellen eine Spalte "Zeitstempel" und alle Tabellen haben unterschiedliche Spalten. Nach dem Kombinieren möchte ich eine Tabelle mit erneutem "Zeitstempel" und den Spalten aller Tabellen in einer Zeile haben.

Ich arbeite in MS-SQL

Antworten:

2 für die Antwort № 1

Wenn eine der Tabellen alle Zeitstempel enthält, können Sie Folgendes tun:

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

Andernfalls müssen Sie möglicherweise Folgendes tun:

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

Der erste Teil erhält alle möglichen Zeitstempel und verbindet sie mit den 3 Tabellen. Sie können die ausgewählten Spalten ein wenig massieren, um keine doppelten Zeitstempelspalten zurückzugeben