2013-02-06 5 views
5

Ich habe ein Problem mit meiner SQL-Anweisung: Ich benutze SELECT-Anweisung und dann CASE, wenn ich Bestellung durch.T SQL-Case-Anweisung mit primären und sekundären Reihenfolge von Parameter

SELECT ..... 
ORDER BY 
CASE WHEN @sort = 'ND' THEN name END DESC, 
CASE WHEN @sort = 'NA' THEN name END, 
CASE WHEN @sort = 'AD' THEN (isAuthorized) END DESC, 
CASE WHEN @sor = 'AA' THEN (isAuthorized) END 

isAuthorized ist ein BIT-Wert, also möchte ich sekundäre Reihenfolge von dort verwenden.

habe ich versucht, so etwas wie:

SELECT ..... 
ORDER BY 
CASE WHEN @sort = 'ND' THEN name END DESC, 
CASE WHEN @sort = 'NA' THEN name END, 
CASE WHEN @sort = 'AD' THEN (isAuthorized, name) END DESC, 
CASE WHEN @sort = 'AA' THEN (isAuthorized, name) END  

Aber es funktioniert nicht.

Ich benutze SQL Server 2008

Jede Hilfe wäre sehr dankbar.

Antwort

7

Wenn Sie das Ergebnis bestellen möchten setzen zuerst von name und dann durch isAuthorized wenn @sort = ND Verwendung dieser Abfrage:

SELECT ..... 
ORDER BY 
CASE WHEN @sort = 'ND' THEN name END DESC, 
CASE WHEN @sort = 'ND' THEN isAuthorized END 

Sie CASE Klauseln kombinieren. Ich hoffe, du hast die Idee.

+1

Ich wollte das Gegenteil, zunächst von isAuthorized und dann nach dem Namen (wie ich nach vielen Spalten sortieren). Aber deine Antwort wies mich auf die richtige Richtung hin, da ich nicht wusste, wie man mehr als eine Reihenfolge mit einer Aussage kombiniert. Thanks a bunch ... bewertet und als Antwort markiert;) – CyberHawk

+0

Froh, dass es geholfen hat! –