Zeigt die Reihenfolge einer SQL-Abfrage ohne Reihenfolge nach Klausel an

7

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.

    
ShubhadeepChat 13.08.2015, 05:58
quelle

7 Antworten

13

Keine Möglichkeit, dies nativ zu tun. Probieren Sie:

%Vor%     
rabudde 13.08.2015, 06:02
quelle
7

Sie können eine Tabellenvariable verwenden, um die Eingaben zu übergeben. Sie müssen die Datensätze in dieser Tabellenvariablen in der gewünschten Reihenfolge einfügen.

%Vor%

Versuchen Sie es.

    
Jasqlg 13.08.2015 06:10
quelle
2

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.

%Vor%

Ergebnis:

%Vor%     
Salman A 13.08.2015 07:17
quelle
1

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:

%Vor%     
Felix Pamittan 13.08.2015 06:11
quelle
0

Die folgende Abfrage gibt Ihnen das genaue Ergebnis (ohne Reihenfolge):

%Vor%     
Biswabid 13.08.2015 06:18
quelle
0

Wenn Ids eine Variable ist, die als Eingabeparameter an eine gespeicherte Prozedur übergeben wird, können Sie sie mithilfe von teilen CTE .

%Vor%     
Maciej Los 13.08.2015 06:20
quelle
0

Der einfachste Weg, dies zu erreichen, besteht wahrscheinlich darin, einen Tabellenwertkonstruktor als Tabellenausdruck zu verwenden, der die IDs mit einem Sortierwert enthält, und dann nach diesem Wert zu sortieren:

%Vor%     
SQLDiver 13.08.2015 10:35
quelle

Tags und Links