你需要能够告诉每个排什么的最近日期base_percentage是,如果你希望能够通过它来进行排序。一种方法是这样的。您不需要在选择输出中保留LD.LastDayBase,我添加了它,以便您可以在测试时轻松查看该值。
如果您知道@LastDay是什么,您可以将它传递给查询并跳过第一行。
DECLARE @LastDay date = (select MAX(Curr_Date) from v_DailyDetails);
SELECT VD.*, LD.LastDayBase
FROM v_DailyDetails VD
LEFT OUTER JOIN
(
Select Name, BASE_PERCENTAGE LastDayBase
From v_DailyDetails VD
Where CURR_DATE = @LastDay
) LD on LD.Name = VD.Name
ORDER BY LD.LastDayBase DESC, VD.CURR_DATE DESC, LD.NAME
请注意,您所要求的订单意味着如果Alice和Bob都具有相同的LastDayBase值,那么你会得到下面的顺序ALICE Feb4,鲍勃Feb4,爱丽丝Feb3,鲍勃Feb3等,如果你想天对于一个给定的名字是永远在一起,你应该使用
ORDER BY LD.LastDayBase DESC,LD.NAME,VD.CURR_DATE DESC
我真的不明白....你想倒序对于BASE_PERCENTAGE,CURR_DATE和NAME?如果是这样,如果你通过CURR_DATE,NAME,BASE_PERCENTAGE desc命令你的输出是什么? – Kostis
http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557 –
Hi @Kostis如果你仔细看到输出结果,你就会明白。第一最大基地百分比必须找出。比最大值显示所有日期的所有行。同样它会继续。 –