Wie kann ich zwei Zeilen einer Datenbank zu einer verschmelzen und unterschiedliche Spalten zusammenkombinieren?
Hey!
Bräuchte Eure Hilfe bzgl. eines Fusion-Problems, an dem ich gerade knabbere...
Schönen Gruß,
stevens
Zwei Zeilen einer Tabelle wie z.B.:
sollen folgend kombiniert werden:
d.h. bei gleichen LotNumbers soll der kleinere StartDate und StartTime mit dem größeren EndDate und EndTime kombiniert werden, so dass wie im Beispiel bei LotNumber 1000 nun der StartDate und StartTime vom TaskName A verwendet wird und der EndDate und EndTime von TaskName B.
Wie könnte ich dies realisieren?
Bräuchte Eure Hilfe bzgl. eines Fusion-Problems, an dem ich gerade knabbere...
Schönen Gruß,
stevens
Zwei Zeilen einer Tabelle wie z.B.:
LotNumber | TaskName | StartDate | StartTime | EndDate | EndTime |
1000 | A | 1.1.2010 | 10:00 | 2.1.2010 | 21:00 |
1000 | B | 3.1.2010 | 19:00 | 5.1.2010 | 20:00 |
sollen folgend kombiniert werden:
LotNumber | StartDate | StartTime | EndDate | EndTime |
1000 | 1.1.2010 | 10:00 | 5.1.2010 | 20:00 |
d.h. bei gleichen LotNumbers soll der kleinere StartDate und StartTime mit dem größeren EndDate und EndTime kombiniert werden, so dass wie im Beispiel bei LotNumber 1000 nun der StartDate und StartTime vom TaskName A verwendet wird und der EndDate und EndTime von TaskName B.
Wie könnte ich dies realisieren?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 140776
Url: https://administrator.de/forum/wie-kann-ich-zwei-zeilen-einer-datenbank-zu-einer-verschmelzen-und-unterschiedliche-spalten-140776.html
Ausgedruckt am: 18.04.2025 um 20:04 Uhr
9 Kommentare
Neuester Kommentar
Eine Möglichkeit in MySQL (nicht die schnellste):
SELECT a.LotNumber,
(SELECT CONCAT(b.StartDate," ",b.StartTime) FROM test1 b WHERE b.LotNumber = a.LotNumber ORDER BY b.StartDate, b.StartTime LIMIT 1) AS `Start`,
(SELECT CONCAT(c.EndDate," ",c.EndTime) FROM test1 c WHERE c.LotNumber = a.LotNumber ORDER BY c.EndDate DESC, c.EndTime DESC LIMIT 1) AS `End`
FROM test1 a GROUP BY a.LotNumber
Moin stevensqwe,
Access kennt weder LIMIT noch TOP. (Soweit ich weiss)
Wenn du die beide "TOP 1"-Stellen löscht, solltest du zumindest einen Resultset auf den Schirm bekommen.
Und wenn ich dasGestrunkele Statement richtig inhaliere, meinst du doch mit diesem ORDER BY...TOP 1 soviel
wie weniger komplex formulierende Menschen mit einem MAX() ...oder MIN() der Start/Endezeitpunkte bekunden würden.
Warum sagst du das dem Access nicht?
Nachtrag: so zum Beispiel:
Grüße
Biber
Access kennt weder LIMIT noch TOP. (Soweit ich weiss)
Wenn du die beide "TOP 1"-Stellen löscht, solltest du zumindest einen Resultset auf den Schirm bekommen.
Und wenn ich das
wie weniger komplex formulierende Menschen mit einem MAX() ...oder MIN() der Start/Endezeitpunkte bekunden würden.
Warum sagst du das dem Access nicht?
Nachtrag: so zum Beispiel:
SELECT A.LotNumber,
(SELECT max(B.StartDate + B.StartTime) FROM M_LotNumber_StartEnd AS B
WHERE B.LotNumber = A.LotNumber ) AS Start,
(SELECT min(C.EndDate + C.EndTime) FROM M_LotNumber_StartEnd AS C
WHERE C.LotNumber = A.LotNumber
) AS End
FROM M_LotNumber_StartEnd AS A
GROUP BY A.LotNumber
Biber
Moin stevensqwe,
das weiss ich so auch nicht - ich sehe da keinen Syntax-Fehler.
Ist aber auch insofern erstmal egal, da sich eigentlich zwei Folgefragen ergeben..
1. Wenn du wirklich "nur" die drei Felder Lotnumber, Max(StartZeit) der LotNumber, Min(Endzeit) der Lotnumber brauchen würdest OHNE weitere Attribute...
Dann bräuchtest du auch nicht über drei (logische) Tabellen gehen, sondern nur über eine.
2. Wenn du aber mehr Attribute brauchst, dann müssen die ja entweder aus dem Datensatz mit der Max-Startzeit oder dem mit der Min-Endzeit kommen.
Also dann: welche Attribute woher, falls Variante 1 nicht ausreicht?
Grüße
Biber
das weiss ich so auch nicht - ich sehe da keinen Syntax-Fehler.
Ist aber auch insofern erstmal egal, da sich eigentlich zwei Folgefragen ergeben..
1. Wenn du wirklich "nur" die drei Felder Lotnumber, Max(StartZeit) der LotNumber, Min(Endzeit) der Lotnumber brauchen würdest OHNE weitere Attribute...
Dann bräuchtest du auch nicht über drei (logische) Tabellen gehen, sondern nur über eine.
SELECT LotNumber,
max(StartDate + StartTime) AS Start,
min(EndDate + EndTime) AS End
FROM M_LotNumber_StartEnd
GROUP BY LotNumber
2. Wenn du aber mehr Attribute brauchst, dann müssen die ja entweder aus dem Datensatz mit der Max-Startzeit oder dem mit der Min-Endzeit kommen.
Also dann: welche Attribute woher, falls Variante 1 nicht ausreicht?
Grüße
Biber
Moin stevensqwe,
die eckigen Klammern sind wieder verursacht durch die Verwendung eines "reservierten Wortes".
Ich habe gestern oder vorgestern in einen anderen Access-Beitrag einen Link auf die von M$ veröffenliche Liste gepostet, aber ich glaube, es steht auch sogar in den Access-Hilfedateien.
Das Umbenamsen von "End" in "EndZ" war auf jeden Fall die richtige Reaktion.
Grüße
Biber
die eckigen Klammern sind wieder verursacht durch die Verwendung eines "reservierten Wortes".
Ich habe gestern oder vorgestern in einen anderen Access-Beitrag einen Link auf die von M$ veröffenliche Liste gepostet, aber ich glaube, es steht auch sogar in den Access-Hilfedateien.
Das Umbenamsen von "End" in "EndZ" war auf jeden Fall die richtige Reaktion.
Grüße
Biber