Hochzählen und unter bestimmten Umständen wieder neu starten

pooleleven

Benutzer
Beiträge
8
Hallo, ich befülle eine Tabelle mit den Werte aus 2 Quellen mithilfe einer StoredProcedure.

INSERT INTO ERGEBNIS (TYPID, BEZEICHNUNG_TYP, SORTIERUNG_NACH_PRIO)
Select
QUELLE1.EINTRAGID,
QUELLE2.BEZEICHNUNG,
QUELLE2.??? SORTIERUNG NACH PRIO
JOIN QUELLE2 ON QUELLE2.TYPID = QUELLE1.TYPID
ORDER BY QUELLE1.EINTRAGID, QUELLE2.PRIO

Mein Problem ist SORTIERUNG NACH PRIO in der Ergebnistabelle. Es darf hier nicht nur die Prio abgelegt werden, sondern sollte der Sortierung der PRIO von 1 weg ohne fehlende Stellen hochgezählt werden. ... und sobald die nachfolgende EINTRAGID kommt, muss wieder von 0 begonnen werden.

Ich verstehe nicht, wie ich hier eine lokale Variable in MSSQL in einen Zusammenhang mit dem Statement setzen kann. Mein Googeln war da recht fruchtlos ... auch wenn ich etwas über dynamische Statements in mit lokalen Variablen lernen durfte
Kann mir da jemand einen Hinweis geben?

QUELLE1
EINTRAGIDTYPID
1001
1002
2001
2004
3001
3003
3004
4001

QUELLE 2 (TYPEN)
TYPIDBEZEICHNUNGPRIO
1TypA0
2TypB1
3TypC2
4TypD3

ERGEBNBIS :: GESUCHTES ERGEBNIS ERGEBNIS
EINTRAGIDBEZECHNUNG_TYPSORTIERUNG NACH PRIO
100TypA1
100TypB2
200TypA1
200TypD2
300TypA1
300TypC2
300TypD3
400TypA1
 
Werbung:
Hallo
Ich verstehe das zwar nicht richtig aber ich würde sagen du musst erstmal in der Abfrage nach Prio gruppieren, also GROUP BYPrio ORDER BY EintragID

Mike
 
Werbung:
Ich glaube hier liegt ein Verständnisproblem zu Grunde: Sortierung ist eigentlich keine Aufgabe beim Schreiben von Daten sondern nur beim Lesen von Daten. Du gibst also i.d.R. keine Sortierung als Spalte in der Tabelle mit sondern sortierst bei der Ausgabe nach deinen Bedürfnissen.

Es gibt natürlich Fälle in denen eine künstliche Sortierung gezielt vorgegeben werden muss weil die Sortierung Bestandteil der Information ist, das könnte hier deine Unterteilung in Prioritätsgruppen sein. Aber die finale Sortierung bei der Ausgabe würde man nicht im Datensatz pflegen sondern dynamisch bei Abfrage der Daten erstellen. Im simpelsten Fall mit ORDER BY prio,<weitere spalte>
 
Zurück
Oben