pisanie procedury przechowywanej w MS SQL Server 2008 R2, chcę unikać DSQL ...Warunkowo SQL ORDER BY ASC/DESC dla alfa kolumn
Chciałbym metodę sortowania (ASC lub DESC) do warunkowy.
Teraz z kolumny numerycznej chciałbym po prostu użyć instrukcji case i neguje wartość naśladować ASC lub DSC ... Czyli:
... ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [NumericColumn] ELSE -[NumericColumn] END ASC
Co jest odpowiednia metoda robi to z kolumna alfa?
EDYTOWANIE: Pomyślałem o sprytnie, ale wydaje się to niewiarygodnie nieefektywne ... Mógłbym wstawić uporządkowaną kolumnę alfy do tabeli tymczasowej z autonumerą, a następnie posortować według autonumeru za pomocą metody opisanej powyżej.
EDIT2:
Co myślicie o tym podejściu?
ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [AlphaColumn] ELSE '' END ASC,
CASE @OrderAscOrDesc WHEN 0 THEN '' ELSE [AlphaColumn] END DESC
ja nie wiem, czy zmuszanie rodzaj sprawie jednolitego kolumnie jest bardziej wydajny niż wynikające z posortowanych ciągów liczb choć
mądry, bardzo podobny do mojego rozwiązania napisałem w edycji. Mam nadzieję na coś bardziej wydajnego niż wyprowadzenie kolejnej posortowanej kopii danych tylko po to, aby utworzyć porządek sortowania numerycznego .... – Matthew
@Matthew PK: musisz albo zastąpić ciąg dla odpowiedniej liczby, albo dodać fałszywe sortowania dla non odpowiednie przypadki. Nic * naprawdę * sprytnie Obawiam się – gbn
Co sądzisz o podejściu "dwa klauzule ORDER BY" w mojej drugiej edycji? – Matthew