Doppelte Sätze nach Kriterium durchsuchen

mar_hon

Benutzer
Beiträge
11
Hallo zusammen,
ich bin auf der Suche nach eine Lösung für einen SQL.
Ich habe eine Tabelle mit folgenden Werten:

Auftrag_ID Erfolgart Umsatzbetrag
1616 4000 50,00 €
1616 2000 15,00 €
1518 4000 18,00 €
1520 2000 18,00 €
1525 4000 150,00 €
1525 2000 50,00 €
1818 2000 0,00 €
1818 3000 0,00 €

Ich möchte gerne nur die Auftrag_ids ausgeben haben die mit der Erfolgart 4000 und 2000 gefüllt sind.
In meinem Beispiel müsste der Output dann so aussehen:
Auftrag_ID Erfolgart Umsatzbetrag
1616 4000 50,00 €
1616 2000 15,00 €
1525 4000 150,00 €
1525 2000 50,00 €

Ich kann, mit meinem SQL zwar die doppelten Auftrag_IDs ausgeben, aber dann nicht auf die Erfolgart 2000 und 4000 einschränken.

SELECT t1.auftrag_id, t1.erfolgart
FROM TABELLE1 t1
INNER JOIN (
SELECT auftrag_id
FROM TABELLE1
GROUP BY auftrag_id
HAVING COUNT(auftrag_id) > 1) dup ON t1.auftrag_id = dup.auftrag_id

Kann mir jemand bei meinem Problem helfen?
 
Werbung:
Hallo,
als kleiner Hinweis sei Dir gesagt, dass man es ungern sieht,
wenn jemand dieselbe Frage in mehreren Foren stellt.
Man nennt das Crossposting ;)
 
Werbung:
Code:
test=*# select * from mar_hon ;
  id  | erfolg | betrag | waehrung
------+--------+--------+----------
 1616 |   4000 |     50 | €
 1616 |   2000 |     15 | €
 1518 |   4000 |     18 | €
 1520 |   2000 |     18 | €
 1525 |   4000 |    150 | €
 1525 |   2000 |     50 | €
 1818 |   2000 |      0 | €
 1818 |   3000 |      0 | €
(8 rows)

test=*# select * from mar_hon where id in (select id from mar_hon where erfolg in (2000, 4000) group by id having count(1) = 2);
  id  | erfolg | betrag | waehrung
------+--------+--------+----------
 1616 |   4000 |     50 | €
 1616 |   2000 |     15 | €
 1525 |   4000 |    150 | €
 1525 |   2000 |     50 | €
(4 rows)

test=*#

Und ja, bitte kein Crossposting ...
 
Zurück
Oben