您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

删除动态ROW_NUMBER()OVER ORDER BY语句中的重复项

删除动态ROW_NUMBER()OVER ORDER BY语句中的重复项

一种执行此操作的方法是在不同级别定义列别名,以便您可以两次引用它而不用重复该表达式。

SELECT *,
       Row_number() OVER (ORDER BY 
                 CASE WHEN @SortBy LIKE '% ASC' THEN sort_col END ASC, 
                 CASE WHEN @SortBy LIKE '% DESC' THEN sort_col END DESC) AS RowNumber
FROM   YourTable
       CROSS APPLY (SELECT CASE
                             WHEN @SortBy LIKE 'column1 %' THEN Cast(column1 AS sql_VARIANT)
                             WHEN @SortBy LIKE 'column2 %' THEN Cast(column2 AS sql_VARIANT)
                             WHEN @SortBy LIKE 'column3 %' THEN Cast(column3 AS sql_VARIANT)
                             WHEN @SortBy LIKE 'column4 %' THEN Cast(column4 AS sql_VARIANT)
                           END) C(sort_col)

我会考虑使用动态sql来代替。这种全能查询将扼杀获得可以使用索引避免排序的好的计划的想法。

其他 2022/1/1 18:53:15 有406人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶