样本表

我需要将上面的记录按REMARKS按升序排序,然后按FIRSTDATE降序排序,然后按LASTDATE降序排序。
我做这个查询
select * from tblRecord
order by Remarks, FirstDate desc, Lastdate desc给我这个输出

应该是这样的:

更新: Startdate和Enddate是指租户的实际开始日期和最后日期操作,我想要的是将租户按备注的排序分开,在停止时,排序应基于按降序排列的第一个日期,开始时,应按递减顺序按结束日期进行排序。
发布于 2015-06-03 10:05:14
不知道你在寻找什么,因为你目前没有回应,我有两种情况,我可以得到你想要的结果,其中1种可能是错误的,或者两者都可能是错误的,但它们都产生了你用你提供的测试数据来寻找的结果。
情景1:您需要按开始日期、停止时降序和在开始备注时按开始日期向上排序,在这种情况下,您将得到以下代码:SQLFIDDLE
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
select * from mytable
order by remarks,
CASE WHEN remarks = 'started'
THEN enddate END DESC,
CASE WHEN remarks ='ceased'
THEN startdate END DESC;发布于 2015-06-04 01:59:21
这可能有助于您在CASE中使用ORDER BY。
SELECT * FROM tblRecord
ORDER BY CASE Remarks WHEN 'started' THEN Lastdate
ELSE FirstDate END
DESChttps://stackoverflow.com/questions/30615991
复制相似问题