Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Innerhalb einer Tabelle Datensätze nach Bedingungen durchsuchen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von knkrg, 20 Januar 2017.

  1. knkrg

    knkrg Benutzer

    Hallo,

    ich bräuchte einen kleinen Denkanstoß, mein Gehirn liegt gerade auf Masse. Ich habe folgende Tabelle:

    lfdnummer |Massnahme |vorgang
    ----------|---------|--------
    1 |10 |500
    2 |20 |500
    3 |30 |500
    4 |10 |600
    5 |30 |600
    6 |40 |700
    7 |10 |800
    8 |20 |800
    9 |30 |900

    Nun möchte ich alle Vorgänge haben, in denen die Massnahme 10 vorkommt, aber nicht die Massnahme 20.

    Wie bekomme ich das hin?

    Dank für eure Hilfe!
     
  2. akretschmer

    akretschmer Datenbank-Guru

    ich hätte eine Lösung, die aber vermutlich nur in PostgreSQL funktioniert...

    Code:
    test=*# select * from knkrg ;
     m  |  v  
    ----+-----
     10 | 500
     20 | 500
     30 | 500
     10 | 600
     30 | 600
     40 | 700
     10 | 800
     20 | 800
     30 | 900
    (9 Zeilen)
    
    test=*# select v, array_agg(m) from knkrg group by v having array_agg(m) @> array[10] and not array_agg(m) @> array[20];
      v  | array_agg
    -----+-----------
     600 | {10,30}
    (1 Zeile)
    
    test=*#
    
    Die Idee ist, die Massnahmen zu aggregieren und zu prüfen, ob dann da 10 vorkommt und 20 nicht. Vielleicht findest Du einen Weg, das passend nachzubauen.
     
  3. knkrg

    knkrg Benutzer

    @akretschmer: herzlichen Dank für den Denkanstoß. Ich habe es jetzt folgendermaßen gelöst:
    Code:
    SELECT * FROM knkrg WHERE vorgang IN (select vorgang from knkrgwhere Massnahme = 10) and vorgang NOT IN (select vorgang from knkrg where Massnahme = 20)
    
     
    akretschmer gefällt das.
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