我有一个查询语句需要按照两个列排序结果。我的问题是,当特定值存在时,我只需要对第一列进行排序。否则,我希望结果按第二列排序。
我确定我的解释会让大多数人感到困惑,因此这里有一个例子:在大多数情况下,我希望按 Column B (Date) DESC 排序结果。但是,在某些情况下,我需要把记录显示在(或之前)日期排序之上。这发生在 Column A (Status) 的值为“Needs Response”时。所以,如果 Status = 'Needs Response',那么我需要它出现在结果的顶部,但如果它具有任何其他值,则仅按 Date in DESC order 排序。
为了实现这一点,我尝试使用 CASE 语句,但每次尝试都导致所有结果先按 Status 排序,然后再按 Date 排序。我需要的是仅在 Status 值 =“Needs Response”时应用初始排序。
Status | Date
---------------------------
Done | 11/25/2018
Done | 11/12/2018
Confirm | 10/10/2018
Needs Response | 12/5/2018
Acknowledge | 12/8/2018
Confirm | 12/1/2018
Needs Response | 11/24/2018
Confirm | 12/10/2018
使用上述相同的数据,无论我如何尝试,我总是首先按状态和日期排序数据。当使用CASE语句时,我能够将“需要回应”放在结果的顶部,但其余记录仍然按状态和日期排序。
我对示例数据的期望结果是:
Status | Date
---------------------------
Needs Response | 12/5/2018
Needs Response | 11/24/2018
Confirm | 12/10/2018
Acknowledge | 12/8/2018
Confirm | 12/1/2018
Done | 11/25/2018
Done | 11/12/2018
Confirm | 10/10/2018