Hallo!
Nun zur Lösung des ganzen. Ich gehe mal von erstgenannter Tabellenstruktur aus.
Speichert dann folgende
Abfrage1:
SELECT Tabelle1.Datum, Tabelle1.Betrag, Tabelle2.Kosten
FROM Tabelle1 LEFT JOIN Tabelle2 ON Tabelle1.Datum = Tabelle2.Datum
Dann
Abfrage2:
SELECT Tabelle2.Datum, Tabelle1.Betrag, Tabelle2.Kosten
FROM Tabelle2 LEFT JOIN Tabelle1 ON Tabelle2.Datum = Tabelle1.Datum
Daraus dann die
UNION-Abfrage3:
SELECT Abfrage1.\* FROM Abfrage1 UNION select \* from Abfrage2
Und feddisch is die Lauge.
Zum Erstellen der ersten beiden Abfragen ohne die fundierten SQL-Kenntnisse: Lege eine neue Abfrage an, mach die Entwurfsansicht auf, klicke Dir beide Tabellen Tabelle1 und Tabelle2 nach oben, markiere „Datum“ in Tabelle1, ziehe es per Zerr-und-plumps auf das „Datum“ in Tabelle2. Du erhältst einen Strich mit zwei kleineren Knubbeln am Ende. Klicke mit der rechten Maustaste auf den Strich, wähle „Verknüpfungseigenschaften“ und Option 2: „Alle aus Tabelle1 und nur die aus Tabelle2, bei denen Inhalte gleich“. Das ist dann das LEFT JOIN der obigen SQL-Anweisung. Klick Dir per Doppelklick die gewünschten Felder nach unten.
Das ganze wiederholst Du für die zweite Abfrage. Ziehe entweder „Datum“ aus Tabelle2 auf „Datum“ aus Tabelle1 und wähle ebenso die gleiche Option wie oben. Oder ziehe wieder „Datum“ aus Tabelle1 auf „Datum“ aus Tabelle2, wähle aber Option 3: „Alle aus Tabelle2 und nur die aus Tabelle1,…“.
Für die UNION-Abfrage gibt es leider keinen Klickklick-Assistenten. Aber die Anweisung ist ja auch nicht sooo spannend und ggf. leicht manuell eingebbar.
Ach ja, Sortierungen nach eigenen Gusto in der UNION-Abfrage am Ende mit "order by ".
Und noch was: Wenn Du statt der NULL bei Datensätzen, die nicht vorhanden sind, „-“ haben willst, lautet der SQL-Befehl für die Abfragen Abfrage1 und Abfrage2:
SELECT Tabelle1.Datum, Tabelle1.Betrag AS BetragNN, IIf(IsNull([Kosten]),"-",[Kosten]) AS KostenNN
FROM Tabelle1 LEFT JOIN Tabelle2 ON Tabelle1.Datum = Tabelle2.Datum
SELECT Tabelle2.Datum, IIf(IsNull([Betrag]),"-",[Betrag]) AS BetragNN, Tabelle2.Kosten AS KostenNN
FROM Tabelle2 LEFT JOIN Tabelle1 ON Tabelle2.Datum = Tabelle1.Datum
Beachte, dass zwei mal Alias-Feldnamen mit „NN“ (wie „Nicht NULL“) am Ende verwendet werden. Dies ist nötig, um bei der Funktion mit IsNull keinen Zirkelbezug zu erzeugen. Außerdem werden beide Nicht-Datums-Felder mit Aliasnamen versehen, obwohl pro Abfrage theoretisch nur einer benötigt wird. Da dies aber wechselseitig der andere ist (ein mal Betrag, ein mal Kosten), verwende ich hier beide der Übersichtlichkeit halber. Für die UNION-Abfrage wäre das aber nicht zwingend erforderlich. So habe ich zwei identisch aussehende Abfragen, die ich ggf. auch in einer Tabellenerstellungsabfrage benutzen könnte. Und egal welche ich dazu verwende, ich erhalte die gleiche Tabelle.
Ach ja: Bei den Funktionen mit „IsNull“: Beachte, dass die Verwendung dieser sich u. U. von SQL-Dialekt zu SQL-Dialekt unterscheiden mag. Wenn Du die Abfragen auf einer Oracle-DB laufen lassen willst, muss das nicht unbedingt funktionieren.
Gruß, Manfred