我已经它使用动态排序的存储过程,2个参数确定排序 - 柱:@SortIndex
和排序方向:@SortDirection
SQL Server的动态排序
相关的代码:
...
ROW_NUMBER() OVER
(
ORDER BY
-- string order by
CASE @SortDirection
WHEN 'ASC' THEN
CASE @SortIndex
WHEN 1 THEN SKU
WHEN 2 THEN BrandName
WHEN 3 THEN ItemName
END
END ASC,
CASE @SortDirection
WHEN 'DESC' THEN
CASE @SortIndex
WHEN 1 THEN SKU
WHEN 2 THEN BrandName
WHEN 3 THEN ItemName
END
END DESC,
这种种在单列上,但是我想在@SortIndex
为2时对BrandName ASC, ItemName ASC
进行排序。
我建议动态SQL(建立在字符串中查询和执行它)。复杂的排序可以很快导致许多CASE结构覆盖它。 –
您在When 2子句中尝试了Brandname + ItemName吗? –
如果你走这条路,请小心。你有看起来像参数的字符串。你需要注意sql注入并使用参数化的动态sql。 –