03.01.2017

SQL: Пример запроса с возможностью выбора поля, по которому идет сортировка

Пример запроса с возможностью выбора поля, по которому идет сортировка (один из вариантов решения):
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

Комментариев нет:

Отправить комментарий