当前位置: 首页 > 面试题库 >

通过SELECT进行多列动态订购

柯冯浩
2023-03-14
问题内容

当ORDER BY基于CASE语句时,选择多个ORDER BY列的正确MS SQL语法是什么?

以下对于单列工作正常,但我需要按多列进行排序:

SELECT * FROM Products
ORDER BY 
CASE WHEN @SortIndex = 1 THEN Price END ASC,
CASE WHEN @SortIndex = 2 THEN Price DESC, Title ASC END <-- problem line

问题答案:

你可以试试这个

SELECT * FROM Products
ORDER BY 
CASE WHEN @SortIndex = 1 THEN Price END ASC,
CASE WHEN @SortIndex = 2 THEN Price END DESC, 
CASE WHEN @SortIndex = 2 THEN Title END ASC


 类似资料:
  • 问题内容: 我有一个MySql表,我想查询其中 成对 的列在特定集中的行。例如,假设我的表格如下所示: 现在,我希望提取其中 (f1,f2) 对为(’a’,30)或(’b’,20)的行,即行2,3,4。我也希望使用“ IN”样式的过滤器来完成此操作,因为我可能有很多对要提取。如果我尝试类似的方法: 我得到IN子句中为f1和f2指定的值的笛卡尔积,即具有f1 =’a’或’b’的所有可能组合的行,以及

  • 为什么我在这里收到ORA-00918错误?在INSERT WHEN...THEN INTO...SELECT模式中可以选择的列数是否有限制? 注意:我使用的是Oracle 11.2.0.1.0,我试图在生产中执行的实际查询更加复杂,并且引用了其他表(使用“values”是不够的)。这只是简化的情况...

  • 问题内容: 如何按两列对MySQL表进行排序? 我想要的是文章,首先是最高评分,然后是最新日期。例如,这将是一个示例输出(左#是评分,然后是文章标题,然后是文章日期) 我正在使用的相关SQL是: 我可以按一个或另一个排序,但不能两个都排序。 问题答案: 默认排序是递增的,您需要在两个订单中都添加关键字DESC:

  • 问题内容: 我有一个名为“签名”的活动,我是从CordovaPlugin调用的; 插件.java 签名库 但是,当我调用“ cordova.startActivityForResult”函数时,“ onActivityResult”函数会立即自动调用它。我无法通过finishWithResult从Activity回调。任何建议。谢谢 问题答案: 首先,缺少一些代码( 执行 方法的返回语句),您必须

  • 问题内容: 我在一张table上做了一个透视图,生成了动态列: 它返回以下结果: 但是我需要按前三列进行分组以获取以下内容: 所以我需要,但是由于我的枢纽专栏是动态的,所以我无法设法找到解决方案… 这是一个SQL小提琴 问题答案: DECLARE @cols AS NVARCHAR(MAX); DECLARE @query AS NVARCHAR(MAX);