2016-09-24 62 views
0

对案件进行排序现在,当我运行我的查询时,它不会将最终的Score列从最高到最低排序。我似乎无法弄清楚我怎么能把它放在我的案子中。我至少需要第一个和第二个案例来对最后一列进行排序。根据行结果desc

SELECT 
    list.WorkOrder, 
    list.Address, 
    locateparsed.CrossStreet, 
    list.Section, 
    list.Subdivision, 
    locateparsed.KeyMap, 
    locateparsed.City, 
    list.Score 
FROM list 
LEFT JOIN locateparsed ON locateparsed.WorkOrder = list.WorkOrder 
    WHERE locateparsed.City = 'PEARLAND' 
    AND list.Completed = 0 
    AND list.Reference = 0 
    AND locateparsed.Ticket IS NOT NULL 
GROUP BY list.WorkOrder 
ORDER BY CASE 
    WHEN list.Address LIKE '%VINTAGE PARK LN' THEN 1 
    WHEN locateparsed.Address LIKE '%SHADOW RIDGE LN' THEN 2 
    WHEN list.Section = 'Sec. 1' AND list.Subdivision = 'Shadow Ridge' THEN 3 
    WHEN list.Subdivision = 'Shadow Ridge' THEN 4 
    WHEN locateparsed.KeyMap = '612P' THEN 5 
    WHEN locateparsed.KeyMap = '612' THEN 6 
    ELSE 7 
END 

输出示例,我需要:

WO | Address | CrossStreet | Section | Subdivision | KeyMap | City | Score 
1 | 123 test | other | Sec. 1 | Shadow Ridge | 612P | Pearland | 10 
2 | 111 test | other | Sec. 1 | Shadow Ridge | 612P | Pearland | 9 
3 | 333 other | bleach | Sec. 2 | Shadow Ridge | 612P | Pearland | 15 
4 | 334 other | bleach | Sec. 2 | Shadow Ridge | 612P | Pearland | 14 
5 | 848 other | bleach | Sec. 2 | Shadow Ridge | 612P | Pearland | 13 
6 | 733 blah | random | Sec. 5 | Bright Ridge | 612P | Pearland | 24 
7 | 722 hmm | blah | Sec. 5 | Bright Ridge | 612P | Pearland | 5 
8 | 723 hmm | blah | Sec. 5 | Bright Ridge | 612P | Pearland | 4 
9 | 111 asdf | fdas | Sec. 30 | Other Ridge | 650P | Pearland | 48 
10 | 123 asdf | fdas | Sec. 30 | Other Ridge | 650P | Pearland | 43 

回答

0

我想你只需要包含score作为第二排序关键字:

ORDER BY (CASE WHEN list.Address LIKE '%VINTAGE PARK LN' THEN 1 
       WHEN locateparsed.Address LIKE '%SHADOW RIDGE LN' THEN 2 
       WHEN list.Section = 'Sec. 1' AND list.Subdivision = 'Shadow Ridge' THEN 3 
       WHEN list.Subdivision = 'Shadow Ridge' THEN 4 
       WHEN locateparsed.KeyMap = '612P' THEN 5 
       ELSE 7 
      END), 
     score DESC 

这由score排序所有群体作为第二键。如果你只需要前两组,那么你需要包括第二个CASE排序score

+0

是的,这工作完美! –