SQL ステートメントからの次のスニペットがあります
ROW_NUMBER() OVER (ORDER BY CASE
WHEN @SortBy = 'column1 ASC' THEN cast(column1 AS sql_variant)
WHEN @SortBy = 'column2 ASC' THEN cast(column2 AS sql_variant)
WHEN @SortBy = 'column3 ASC' THEN cast(column3 AS sql_variant)
WHEN @SortBy = 'column4 ASC' THEN cast(column4 AS sql_variant)
ELSE NULL
END ASC,
CASE
WHEN @SortBy = 'column1 DESC' THEN cast(column1 AS sql_variant)
WHEN @SortBy = 'column2 DESC' THEN cast(column2 AS sql_variant)
WHEN @SortBy = 'column3 DESC' THEN cast(column3 AS sql_variant)
WHEN @SortBy = 'column4 DESC' THEN cast(column4 AS sql_variant)
ELSE NULL
END DESC) AS RowNumber
それは機能しますが、かなり繰り返します.ASC/DESCも動的にする方法はありますか?重複したCASE
ステートメントは必要ありませんか?