Verständnisfrage bedingter Ausdruck

tdbmotor

Neuer Benutzer
Beiträge
1
Hi,

hab ne Tabelle die z.B. folgendermaßen ausschaut:

Mitarbeiter Projekt Arbeitszeit
1 --------------- 1 --------------- 5
1 --------------- 2 --------------- 4
2 --------------- 1 --------------- 3
3 --------------- 1 --------------- 5

Ich möchte nun bei meinem SELECT STATEMENT für jeden Mitarbeiter,
  • wenn er an beiden Projekten gearbeitet hat (beispiel oben mitarbeiter=1), nur die Zeile mit Projekt=2 verwenden
  • wenn ein Mitarbeiter jedoch keine Zeile mit Projekt=2 besitzt, soll die Zeile mit Projekt=1 verwendet werden.
Die Ausgabe sollte also so sein:
Mitarbeiter Projekt Arbeitszeit
1 --------------- 2 --------------- 4
2 --------------- 1 --------------- 3
3 --------------- 1 --------------- 5

Denke doch, das lässt sich mit bedingten Ausdrücken lösen, bin darin jedoch nicht so fit...

Hier mal mein Anfang:

SELECT mitarbeiter,projekt,arbeitszeit FROM test_projekte

Gruß und vielen Dank
tdb
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
10.014

Ich bin mir nicht sicher über Deine Regel, welches Projekt genommen werden soll, Wenn mein Vermutung stimmt und je Mitarbeiter das Projekt mit der höchsten Nummer, dann so:

Code:
test=*# select * from tdbmotor ;
 mitarbeiter | projekt | arbeitszeit
-------------+---------+-------------
  1 |  2 |  4
  2 |  1 |  3
  3 |  1 |  5
  1 |  1 |  5
(4 rows)

Time: 0,152 ms
test=*# select distinct on (mitarbeiter) mitarbeiter, projekt, arbeitszeit from tdbmotor order by mitarbeiter, projekt desc;
 mitarbeiter | projekt | arbeitszeit
-------------+---------+-------------
  1 |  2 |  4
  2 |  1 |  3
  3 |  1 |  5
(3 rows)
 
Werbung:
Oben