MS SQL指定公司排首位的Group By查询需求
解决方案
可以通过在ORDER BY子句中使用CASE表达式实现指定公司置顶、其余按名称排序的需求,修改后的MS SQL查询语句如下:
SELECT company, avg(score) AS Value FROM Responses WHERE id=12 GROUP BY company ORDER BY CASE WHEN company = 'Your Brand' THEN 0 ELSE 1 END, company;
逻辑说明
CASE WHEN company = 'Your Brand' THEN 0 ELSE 1 END:为目标公司分配更低的排序优先级值(0),确保它排在所有优先级为1的其他公司之前- 第二个排序条件
company:让除目标公司外的其余记录按公司名称升序排列
执行结果
运行上述语句后,将得到符合预期的排序结果:
| COMPANY | VALUE |
|: ------------ | -----:|
| Your Brand | 6.29 |
| Competitor A | 6.09 |
| Competitor B | 5.70 |
| Other Brand | 5.29 |
内容的提问来源于stack exchange,提问作者Allen
相关产品推荐
相关产品推荐

