Filtern von Datensätzen

Tom Weber

Benutzer
Beiträge
9
Hallo zusammen,

ich stehe gerade vor folgendem Problem und komme einfach nicht weiter. Über Hilfe wäre ich dankbar.

Und zwar möchte ich im folgendem Datensatz, die Daten filtern, für die der Typ für alle Ziffern IMMER leer UND die Nr diesselbe also eindeutig ist.

counter | ziffer | typ | nr
--------------
1 | 1 | | 11
2 | 1 | 10 | 11
3 | 2 | | 12
4 | 2 | | 12
5 | 4 | | 13
6 | 4 | | 14

Ergebnis soll demnach so aussehen:

counter | ziffer | typ | nr
--------------
3 | 2 | | 12
4 | 2 | | 12

Wäre nett, wenn mir hier jemand weiterhelfen könnte.
 
Werbung:
hrm, geht vermutlich auch einfacher, aber mal so aus der Hüfte:

Code:
test=*# select * from tom;
 counter | ziffer | typ | nr
---------+--------+-----+----
       1 |      1 |     | 11
       2 |      1 |  10 | 11
       3 |      2 |     | 12
       4 |      2 |     | 12
       5 |      4 |     | 13
       6 |      4 |     | 14
(6 rows)

test=*# with all_null as (select * from tom where ziffer not in (select ziffer from tom where typ is not null)), ziffer as (select ziffer from all_null group by ziffer having count(distinct nr) != count(nr)) select * from tom where ziffer in (select ziffer from ziffer);
 counter | ziffer | typ | nr
---------+--------+-----+----
       3 |      2 |     | 12
       4 |      2 |     | 12
(2 rows)

test=*#
 
Werbung:
Vielleicht so?
Code:
select t.* from tom t
join (select ziffer, nr from tom
where ziffer not in ( select ziffer from tom where typ is not null)
Group by ziffer, nr having count(*) > 1) x
on (t.ziffer, t.nr) = (x.ziffer, x.nr)
 
Zurück
Oben