Пример запроса с возможностью выбора поля, по которому идет сортировка (один из вариантов решения):
DECLARE @OrderBy int = 1 --значение, соответствующее столбцу, по которому будет вестись сортировка SELECT dt.yourColumn1 ,dt.yourColumn2 ,dt.yourColumn3 ,CASE WHEN @OrderBy>0 THEN dt.SortBy ELSE NULL END AS SortByAsc ,CASE WHEN @OrderBy<0 THEN dt.SortBy ELSE NULL END AS SortByDesc FROM (SELECT yourColumn1 ,yourColumn2 ,yourColumn3 ,CASE WHEN ABS(@OrderBy) = 1 THEN surname WHEN ABS(@OrderBy) = 2 THEN forename WHEN ABS(@OrderBy) = 3 THEN fullName WHEN ABS(@OrderBy) = 4 THEN CONVERT(varchar(10),userId) WHEN ABS(@OrderBy) = 5 THEN CONVERT(varchar(10),MobileNumber WHEN ABS(@OrderBy) = 6 THEN DeviceStatus WHEN ABS(@OrderBy) = 7 THEN LastPosition WHEN ABS(@OrderBy) = 8 THEN CONVERT(varchar(23),LastAlert,121) WHEN ABS(@OrderBy) = 9 THEN CONVERT(varchar(23),LastCommunication,121) WHEN ABS(@OrderBy) =10 THEN CONVERT(varchar(23),LastPreAlert,121) ELSE NULL END AS SortBy FROM YourTablesHere WHERE X=Y ) dt ORDER BY SortByAsc ASC, SortByDesc DESC
Комментариев нет:
Отправить комментарий