Innerhalb einer Tabelle Datensätze nach Bedingungen durchsuchen

knkrg

Benutzer
Beiträge
7
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!
 
Werbung:
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.
 
Werbung:
@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)
 
Zurück
Oben