Forum: Datenbanken
Delphi
by sx2008,
5. Mai 2013
Besser wäre es zuerst die Union zu bilden und dann dieses Ergebnis mit den Stammdaten zu verknüpfen.
Also ganz grob so
SELECT DevTbl.*, Stammdaten.* FROM
(SELECT ... FROM Buchungen WHERE ...
GROUP BY ...
UNION ALL
SELECT ... FROM Buchungen WHERE ...
GROUP BY ...) DevTbl
INNER JOIN Stammdaten ON Stammdaten.xxx=DevTbl.xxx
Der Name "DevTbl" ist ein Alias für die innere Abfrage...
Forum: Datenbanken
Delphi
by sx2008,
18. Apr 2013
Also du musst wohl nach Datum und Buchungsart gruppieren und die Buchungsarten getrennt behandeln:
(SELECT Datum, Buchungsart, Min(buchung1) as Startzeit, Max(buchungs2) as Endzeit FROM Buchungstabelle
WHERE Buchungsart = 'A'
GROUP BY Datum, Buchungsart)
UNION ALL
SELECT Datum, Buchungsart, buchung1 as Startzeit, buchungs2 as Endzeit FROM Buchungstabelle
WHERE Buchungsart <> 'A'