MSSQL Eine Tabelle

rrobbyy

Mitglied
Hallo zusammen,

ich habe folgende Tabelle (Auszug) in MSSQL

1566395069904.png

ROWVORGANG = Auftrag
ROWVORGANGPOS = Hauptpositions des Auftrags
ROWVORGANGPOSSTLF = Element zur Hauptposition des Auftrags
ROWVERWEIS = Übergeordnetes Element = ROWVORGANGPOSSTL

Dadurch wird eine Hiearchie gebildet. Die einzelnen "Knoten" und deren Unterelemente nennen wir Baugruppe.

Ich möchte jetzt nicht nur in der Baugruppe selbst das Kennzeichen FERTIGUNG = JA, sondern auch in jedem darunterliegenden Element, aber ich bekomme es ums verrecken nicht hin.
also bspw.
Position 1.1 dann sollen auch 1.1.1., 1.1.2, 1.1.3 etc JA stehen haben...

irgendeine idee?

Vielen Dank im voraus
 
Ist es eine endliche Anzahl Stufen?
Ansonsten eine Prozedur schreiben. Keine Ahnung wie das in MSSQL geht.

Für MySQL habe ich mal was geschrieben, ich weiss aber nicht, ob MSSQL mit Variablen innerhalb eines SQL-Statements umgehen kann
[MySQL] Adjacency Tree [Yaslaw.Info]
 
Theoretisch können die Stufen unendlich werden. Aber praktisch aber ich nie mehr als 10 gesehen.

könntest du das script bitte posten, oder ist es vertraulich?

vielen Dank schon mal
 
oh man, ich brauche echt urlaub! DANKE

ist leider nicht so einfach übertragbar auf MSSQL. Ich konnte es aber eben lösen:

SQL:
select distinct
v1.ROWVORGANG , v1.ROWVORGANGPOS, v1.ROWVORGANGPOSSTL, v1.ROWVERWEIS, v1.POSITION, v1.ART_STR09,
(select top(1) 'JA' from VORGPOSSTL v2 where v2.ROWVORGANG = v1.ROWVORGANG and v1.ROWVORGANGPOS = v2.ROWVORGANGPOS and v1.ROWVERWEIS = v2.ROWVORGANGPOSSTL and v2.ART_STR09 = 'JA')

from VORGPOSSTL v1

where v1.ROWVORGANG = 2983 and
ART_STR09 = 'JA' or
(select top(1) 'JA' from VORGPOSSTL v2 where v2.ROWVORGANG = v1.ROWVORGANG and v1.ROWVORGANGPOS = v2.ROWVORGANGPOS and v1.ROWVERWEIS = v2.ROWVORGANGPOSSTL and v2.ART_STR09 = 'JA') = 'JA'

Es zeigt nur die Baugruppen, die auch wirklich nur FERTIGUNG = 'JA' haben. Denn, nur weil eine BG in eine BG steckt, die gefertigt wird, heißt das nicht, dass diese untergeordnete BG ebenfalls gefertigt wird.

DANKE nochmal
 
Zurück