Ich schreibe eine einfache Abfrage in SQL Server:
%Vor% Ich möchte die Ausgabe in der gleichen Reihenfolge erhalten, die gegeben ist, d. 10,9,5,7,3,8
Was auch immer ich das Ergebnis gebe, wird mit gegebener Reihenfolge ohne angezeigt Reihenfolge nach aufsteigend oder absteigend.
Wie kann ich das tun? Bitte helfen.
Sie können CHARINDEX
in einer ungeraden Funktion verwenden Weg: Suche nach der ID in der kommagetrennten Liste und sortiere das Ergebnis nach der Position.
Betrachte diese Liste zum Beispiel 10,9,5,7,3,8
... der Teilstring 10 erscheint an der Position 1 st , während 9 bei 4 th erscheint. Sortieren Sie einfach nach der Position der Teilzeichenfolge.
Ergebnis:
%Vor%Sie können dies dynamisch tun, wenn Ihre Liste eine durch Kommas getrennte Zeichenfolge ist. Zuerst müssen Sie eine Splitterfunktion haben. Hier ist die DelimitedSplit8k von Jeff Moden geschrieben:
%Vor% Dann deklarieren Sie die Liste von empId
s als csv string und verwenden den Splitter:
Wenn Ids
eine Variable ist, die als Eingabeparameter an eine gespeicherte Prozedur übergeben wird, können Sie sie mithilfe von teilen CTE .
Tags und Links sql sql-server tsql