1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, 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

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden