Logik, um zu überprüfen, ob in einer Gruppe in SQL Server exakte IDs vorhanden sind

8

Ich habe einige Beispieldaten wie:

%Vor%

Nun, hier versuche ich zu überprüfen, ob in jeder Gruppe nach FK_ID eine genaue Übereinstimmung von TYPE_ID values 1 & 2 vorliegt.

Also ist die erwartete Ausgabe wie folgt:

  1. (1, 10, 1) Dies sollte fehlschlagen
    • Wie in der Gruppe FK_ID = 10 haben wir nur einen Datensatz
  2. (2, 11, 1), (3, 11, 2) sollte übergeben werden
    • Wie in der Gruppe FK_ID = 11 haben wir zwei Datensätze.
    • Und beide TYPE_ID stimmen mit 1 & 2 überein.
  3. (4, 12, 1), (5, 12, 2), (6, 12, 3) Dies sollte ebenfalls fehlschlagen
    • Da wir 3 Datensätze hier haben.
  4. (7, 14, 2), (8, 14, 3) Dies sollte ebenfalls fehlschlagen
    • Obwohl wir genau zwei Datensätze haben, sollte es fehlschlagen, da die TYPE_ID hier nicht mit 1 & 2 Werten übereinstimmen.

Hier ist mein Versuch:

%Vor%

Dies funktioniert nicht wie erwartet, da es auch für FK_ID = 12 mit drei Datensätzen gilt.

Demo: SQL Fiddle

    
CodeNewbie 13.10.2017, 17:07
quelle

3 Antworten

2

Es gibt wahrscheinlich mehrere verschiedene Möglichkeiten, dies zu tun. Einer könnte sein:

%Vor%     
Nenad Zivkovic 13.10.2017 17:15
quelle
1

Wir können Minimum und Maximum zu der Gruppe durch Abfrage

hinzufügen %Vor%     
Valli 13.10.2017 17:24
quelle
0

Eine andere Möglichkeit, aber weniger optimal als die von Nenad ist SELECT INTO (mit Ausgabe in temporäre Tabelle) und dann mit einer anderen Abfrage SELECT nur diese Zeilen, die richtige TYPE_ID-Werte haben.

    
Kuba J. 13.10.2017 17:27
quelle

Tags und Links