SQL Abfrage aus 2 Tabellen mit neuer True/False Spalte

2letuknow

Neuer Benutzer
Beiträge
1
Hi Leute,
ich stehe gerade so ziemlich auf dem Schlauch.

Das Setup:
Tabelle Personen

PID Name
-------------
1 Alice
2 Bob

Tabelle 2

PID TID Datum Aktiv
----------------------------
2 5 05. 12.2017 J
1 4 05.12.2017 N
1 3 05.12.2017 J
2 2 05.12.2017 J
1 1 04.12.2017 J


Gewünschte Ausgabe:
Alice 0 (weil letzte TID =4 und Datum=heute und Aktiv=N)
Bob 1 (weil letzte TID =5 und Datum=heute und Aktiv=J)

Logik:
Spalte 1 Spalte 2
Alle namen letzte/größte TID pro PID wenn datum=heute und Aktiv = J dann spalte 2 = 1 sonst 0

Ist eigentlich nicht so kompliziert =(

Danke & beste Grüße,

Dennis
 
Werbung:
Stimmt. Ist nicht kompliziert. Lösung mit PostgreSQL, ob das in M$SQL geht mußt Du probieren:

Code:
test=# select * from personen ;
 pid | name  
-----+-------
  1 | alice
  2 | bob
(2 rows)

test=# select * from tabelle_2 ;
 pid | tid |  datum  | aktiv
-----+-----+------------+-------
  2 |  5 | 2017-12-05 | t
  1 |  4 | 2017-12-05 | f
  1 |  3 | 2017-12-05 | t
  2 |  2 | 2017-12-05 | t
  1 |  1 | 2017-12-04 | t
(5 rows)

test=# select p.name, x.case as spalte2 from personen p left join (select distinct on (pid) pid, tid, case when datum = current_date and aktiv then 1 else 0 end from tabelle_2)as x on p.pid=x.pid;
 name  | spalte2
-------+---------
 alice |  0
 bob  |  1
(2 rows)

test=#
 
Zurück
Oben