首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server查询-按列和每个分组的多个顺序

Server查询-按列和每个分组的多个顺序
EN

Stack Overflow用户
提问于 2015-06-03 09:25:33
回答 2查看 73关注 0票数 1

样本表

我需要将上面的记录按REMARKS按升序排序,然后按FIRSTDATE降序排序,然后按LASTDATE降序排序。

我做这个查询

代码语言:javascript
复制
select * from tblRecord 
order by Remarks, FirstDate desc, Lastdate desc

给我这个输出

应该是这样的:

更新: StartdateEnddate是指租户的实际开始日期和最后日期操作,我想要的是将租户按备注的排序分开,在停止时,排序应基于按降序排列的第一个日期,开始时,应按递减顺序按结束日期进行排序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-03 10:05:14

不知道你在寻找什么,因为你目前没有回应,我有两种情况,我可以得到你想要的结果,其中1种可能是错误的,或者两者都可能是错误的,但它们都产生了你用你提供的测试数据来寻找的结果。

情景1:您需要按开始日期、停止时降序和在开始备注时按开始日期向上排序,在这种情况下,您将得到以下代码:SQLFIDDLE

代码语言:javascript
复制
select * from mytable
order by remarks,
CASE WHEN remarks = 'started'
THEN startdate END ASC,
CASE WHEN remarks ='ceased'
THEN startdate END DESC,
enddate DESC

情境2:当您的备注停止时,您需要按开始日期订购记录,当备注启动时,您需要按结束日期订购,在这种情况下,查询将是:SQLFIDDLE

代码语言:javascript
复制
select * from mytable
order by remarks,
CASE WHEN remarks = 'started'
THEN enddate END DESC,
CASE WHEN remarks ='ceased'
THEN startdate END DESC;
票数 1
EN

Stack Overflow用户

发布于 2015-06-04 01:59:21

这可能有助于您在CASE中使用ORDER BY

代码语言:javascript
复制
SELECT * FROM tblRecord 
ORDER BY CASE Remarks WHEN 'started' THEN Lastdate
                      ELSE FirstDate END
DESC
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30615991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档