[MSSQL] Datenanalyse einer Tabelle mit Abhängigkeit vorangegangener Reihen

LudwigK

Grünschnabel
Hallo Zusammen,
tutorials.de habe ich gut in Erinnerungen, wenn es um komplizierte Abfragen geht. Das Internet habe ich schon durchstöbert, konnte leider nichts passendes finden - womöglich habe ich aber auch mit den falschen Fragmeneten gesucht.

Zu meinem Problem.
Ich habe eine DB die wie folgt aufgebaut ist:
Positiona_IDReferenzName
a066K
a166D
a477J
a677S
a788J
a888S
a988N
b200J
b300B
b500S
b1099B
b1199J

Jetzt möchte ich am Liebsten eine Auswertung haben die mir ein Ergebnis wie folgt gibt:
PositionNameCount Referenz
aK1
aD1
aJ2
aS2
bJ2
bB2

Zur Erläuterung:
Innerhalb einer Position (z.B. a) gibt es über die Referenz (z.B. 66, 77) Verkettungen zu den Namen. D.h. die Datensätze "a, 4, 77, J" und "a, 7, 88, J" zeigen, dass die Position bei der Referenz 77 und 88 einen Namen "J" hat. Die Datenbank soll mir nun die Datensätze ausgeben, bei denen auch bei den Referenzen 77 und 88 und Position a ein gleicher Name steht. Demnach kommt man zum Ergebnis "a, J, 2" und "a, S, 2". (3. und 4. Wert der Auswertung.) Die ersten beiden Datensätze "a, K, 1" und "a, D, 1" stehen bei Position a nur in der Referenz 66. Weil die Referenz 66 zu den Referenzen 77 und 88 keinen gleichen Namen hat, sollen die Namen K und D angezeigt werden.

Bei den Datensätzen mit der Position b konnte ich mir wie folgt helfen, habe es aber auch nicht geschaft die Anzahl der Referenz mitzutransportieren:

1. Tabelle erzeugt:
Code:
<-- SELECT INTO QUERY - Anzahl Name-->
SELECT Position, COUNT(DISTINCT Referenz) AS Anzahl INTO AnzName FROM Referenz GROUP BY Position

2. Tabelle erzeugt:
Code:
<-- SELECT INTO QUERY - Auflistung Name-->
SELECT Position, Name, COUNT (*) AS AnzName INTO Aufstellung From Referenz
GROUP BY Position, Name

3. Die Auswertung:
Code:
SELECT Aufstellung.Position, Aufstellung.Name, Aufstellung.AnzName, AnzName.Anzahl
	From Aufstellung
	INNER JOIN AnzName ON AnzName.Position = Aufstellung.Position
		WHERE AnzName.Anzahl= Aufstellung.AnzName ORDER BY Position, Name

Das klappt auch für den Fall b. Aber es zählt nur die Referenz und wertet diese aus. Sobald eine weitere Referenz ohne Verkettung im Datensatz ist passt meine Lösung selbstverständlich nicht mehr, da die Anzahl der Namen höher ist, als mögliche Verkettungen im Datensatz stehen.

Ich hoffe, ich konnte mein Problem verständlich schildern und Ihr könnt mir helfen! Vielen Dank schon mal!

Viele Grüße
LudwigK
 
Zuletzt bearbeitet:
Zurück