T-SQL Conditional Order By

后端 未结 5 594
闹比i
闹比i 2020-12-03 00:21

I am trying to write a stored procedure that returns a list of object with the sort order and sort direction selected by the user and passed in as sql parameters.

Le

5条回答
  •  南笙
    南笙 (楼主)
    2020-12-03 01:20

    There are multiple ways of doing this. One way would be:

    SELECT *
    FROM
    (
      SELECT
      ROW_NUMBER() OVER ( ORDER BY
      CASE WHEN @sortOrder = 'name' and @sortDir = 'asc' then name
      END ASC,
      CASE WHEN @sortOrder = 'name' and @sortDir = 'desc' THEN name
      END DESC,
      CASE WHEN i(@sortOrder = 'created_date' and @sortDir = 'asc' THEN created_date
      END ASC,
      CASE WHEN i(@sortOrder = 'created_date' and @sortDir = 'desc' THEN created_date
      END ASC) RowNum
      *
    )
    order by 
    RowNum
    

    You can also do it using dynamic sql.

提交回复
热议问题