ubuntuusers.de

sqlite3: Zeilen zusammenführen

Status: Gelöst | Ubuntu-Version: Xubuntu 14.04 (Trusty Tahr)
Antworten |

zmsvsq

Anmeldungsdatum:
4. Februar 2013

Beiträge: 37

Hallo,

ich habe eine Tabelle mit Zeilen der folgenden Form gegeben:

Spalte1 | Spalte2 | Spalte3 | Spalte4 | Spalte5
--------+---------+---------+---------+---------
5       |aa       |bbb      |31       |18
12      |a        |b        |3        |7
23      |a        |b        |0        |1
25      |aa       |bb       |12       |19
71      |aa       |bb       |7        |5 
82      |aa       |bbb      |15       |18

Ich möchte nun Zeilen zusammenführen, in denen Spalte2 UND Spalte3 übereinstimmen. Am Ende möchte ich eine Tabelle der Form

Spalte1 | Spalte2 | Spalte3 | Spalte4 | Spalte5
--------+---------+---------+---------+---------
23      |a        |b        |3        |7
71      |aa       |bb       |12       |19
82      |aa       |bbb      |31       |18

erhalten. Diese Tabelle ergibt sich in dem man in Spalte1, Spalte4 und Spalte5 den maximalen Wert setzt, der in den Spalten vorkommt, in denen Spalte2 UND Spalte3 übereinstimmen und anschließend doppeltes Auftreten der Zeilen löscht. Es treten jeweils maximal zwei Zeilen auf, in denen sowohl Spalte2 als auch Spalte3 übereinstimmen. Die Werte aus Spalte1 sind immer dort kleiner oder gleich, wo die Werte aus Spalte 4 oder 5 größer oder glein sind. Die alte Tabelle soll durch die neue Tabelle überschrieben werden.

Ich hoffe ihr könnt mir eine Idee liefern, wie man das mit sqlite3 umsetzen kann.

Hoerbert

Avatar von Hoerbert

Anmeldungsdatum:
3. Oktober 2007

Beiträge: 375

Moin zmsvsq,

also bei mir funktioniert bei deinen Testdaten folgendes:

1
2
3
Select MAX(Spalte1), spalte2, spalte3, MAX(spalte4), MAX(spalte5) 
From tabelle
Group By spalte2, spalte3

Gruß

Torben

zmsvsq

(Themenstarter)

Anmeldungsdatum:
4. Februar 2013

Beiträge: 37

Hallo Torben,

vielen Dank. Das funktioniert, den GROUP BY-Befehl kannte ich nicht.

Gruß

Antworten |