SQL-Statement mit "kompliziertem" JOIN auf eine einzige Tabelle

Diskutiere SQL-Statement mit "kompliziertem" JOIN auf eine einzige Tabelle im Datenbanken Forum im Bereich Datenbanken; Hallo zusammen. Zwar habe ich schon einige SQL-Erfahrungen machen können, doch scheint das für komplizierte JOIN-Statements leider noch nicht ganz...
#1
DerZong

DerZong

MODERATOR/FAQ-Team
Threadstarter
Team
Dabei seit
12.10.2004
Beiträge
4.667
Alter
41
Hallo zusammen.
Zwar habe ich schon einige SQL-Erfahrungen machen können, doch scheint das für komplizierte JOIN-Statements leider noch nicht ganz auszureichen :hehe

Erstmal die Ausgangslage (in leicht abgewandelter, vereinfachter Art): Ich habe lediglich eine Tabelle (in einer DB2-Datenbank), die folgende Spalten hat:

T_ID (varchar) [Teile-ID]
F_ID (varchar) [Fehler-ID]
TS (timestamp) [Zeitpunkt der Erfassung]
Status (numeric) [Status=1: geschlossen (close); Status=2: geöffnet (open)]
User (varchar)
Primary Key sind hierbei die Spalten T_ID, F_ID und TS

Diese ist entsprechend gekürzt gefüllt:

T_ID F_ID TS Status User
7410130 0538 07.05.2014 20:47:28 1 0EPHF2B1
7410130 0538 12.05.2014 16:19:44 1 0EPHF2B4
7410130 0538 12.05.2014 16:19:37 2 0EPHF2B4
7410130 0538 07.05.2014 17:12:34 2 0PPHZ061
7410130 0637 09.05.2014 10:53:16 2 RA00FEHR
7410130 0637 09.05.2014 12:21:36 1 0EPHF3B3
7410130 0638 09.05.2014 10:53:10 1 RA00FEHR
7410130 0638 09.05.2014 10:44:05 2 0DPHF1PB
7410130 0638 07.05.2014 20:47:37 2 0EPHF2B1
7410130 0638 07.05.2014 17:11:22 2 0PPHZ061
7410130 0638 07.05.2014 18:57:09 1 6PPHZ06D
7410130 0638 09.05.2014 09:22:31 1 0PPHZ076
7410130 2138 08.05.2014 12:35:15 1 0EPHF2LB
7410130 2138 07.05.2014 18:57:11 2 6PPHZ06D
7410130 3047 09.05.2014 10:50:26 1 RA00FEHR
7410130 3071 09.05.2014 10:53:12 2 RA00FEHR
7410130 3071 09.05.2014 12:21:37 1 0EPHF3B3
7410130 5639 07.05.2014 17:11:23 2 0PPHZ061
7410130 5838 12.05.2014 09:26:14 1 AD00QK


Ich benötige nun hieraus quasi eine neue Tabelle (oder Ergebnismenge), bei der folgende Bedingungen erfüllt sind:

Wenn nur Status 1 (geschlossen) vorhanden ist, dann wird der selber Wert für Status 2 (geöffnet) verwendet
Zu einem Status 2 darf immer höchstens ein Status 1 gehören. Dabei wird immer der Eintrag verwendet, der nach der Öffnung den niedrigsten Zeitstempel für das Schliessen hat.
Gibt es nur ein Status 2, dann müssen die Spalten der Ziel-Tabelle für "Close" leer bleiben.

Daraus ergibt sich in der Theorie folgende "Ziel-Tabelle":

T_IDF_IDTS_openUser_openTS_closeUser_close
7410130053807.05.2014 17:12:340PPHZ06107.05.2014 20:47:280EPHF2B1
7410130053812.05.2014 16:19:370EPHF2B412.05.2014 16:19:440EPHF2B4
7410130063709.05.2014 10:53:16RA00FEHR09.05.2014 12:21:360EPHF3B3
7410130063807.05.2014 17:11:220PPHZ06107.05.2014 18:57:096PPHZ06D
7410130063807.05.2014 20:47:370EPHF2B109.05.2014 09:22:310PPHZ076
7410130063809.05.2014 10:44:050DPHF1PB09.05.2014 10:53:10RA00FEHR
7410130213807.05.2014 18:57:116PPHZ06D08.05.2014 12:35:150EPHF2LB
7410130304709.05.2014 10:50:26RA00FEHR09.05.2014 10:50:26RA00FEHR
7410130307109.05.2014 10:53:12RA00FEHR09.05.2014 12:21:370EPHF3B3
7410130563907.05.2014 17:11:230PPHZ061
7410130583812.05.2014 09:26:14AD00QK12.05.2014 09:26:14AD00QK


Wie muss nun also das SQL-Statement aussehen, um zur Ziel-Tabelle zu gelangen. Zumindest habe ich schon einmal festgestellt, dass ein einziges JOIN mit sich selber nicht ausreicht :confused
Wer kann mir hier unter die Arme greifen :aha
 
Thema:

SQL-Statement mit "kompliziertem" JOIN auf eine einzige Tabelle

SQL-Statement mit "kompliziertem" JOIN auf eine einzige Tabelle - Ähnliche Themen

  • sqlservr.exe SQL Server Windows NT - 64 Bit very high memory usage

    sqlservr.exe SQL Server Windows NT - 64 Bit very high memory usage: Der Systemprozess sqlservr.exe hat mitunter eine CPU Auslatung von bis zu 60%. Erkennbare Anwendungen werden zu dessen Spitzenauslastungen...
  • Fehlermeldung 3414 SQL Startet nicht mehr

    Fehlermeldung 3414 SQL Startet nicht mehr: Hallo, leider habe bis jetzt keine Lösung gefunden. Siehe Foto Ich kann momentan keine Backups machen oder SQL Server starten. Funktioniert...
  • SQL-Server ist mit Windows 10 schneller als mit Windows Server 2016

    SQL-Server ist mit Windows 10 schneller als mit Windows Server 2016: Hallo, ich habe eine Frage, warum ist ein SQL-Server Standard 2017 der auf einem Windows 10 installiert ist schneller als wenn ich ihn auf...
  • SQL Statement "Select ab Zeile" gesucht

    SQL Statement "Select ab Zeile" gesucht: Folgendes Problem: Ich möchte eine Abfrage auf eine DB setzen, welche die Daten splittet. Wenn mehr als 500 Daten vorhanden sind, dann setze ich...
  • JBoss SQL Statements loggen

    JBoss SQL Statements loggen: Hallo, ich habe einen jboss in verwendung, welcher per hibernate an einer mysql-db angebunden ist. fürs debuggen habe ich die jboss-log4j.xml...
  • Ähnliche Themen

    Oben