1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

SQL Abfrage aus 2 Tabellen mit neuer True/False Spalte

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von 2letuknow, 5 Dezember 2017.

  1. 2letuknow

    2letuknow Neuer Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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=#
    
     
Die Seite wird geladen...

Diese Seite empfehlen