数据库排序问题

sqlserver数据库,表字段是这样的,ID,部门,责任人,正常情况按照部门,ID进行排序,当责任人出现相同的情况(两行数据同一责任人),优先把责任人相同的排在一起,再按部门,ID进行排序。这个纯靠数据库可以实现吗?

SQL 帆软用户p9k8MX4NIW 发布于 2023-9-25 08:44
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
2
Z4u3z1Lv6专家互助
发布于2023-9-25 08:51

image.png

最佳回答
0
掌上猪崽Lv5见习互助
发布于2023-9-25 11:01(编辑于 2023-9-25 11:02)

image.png

image.png

with t as ( select 1 id,'A' 部门,'甲' 责任人 from dual union select 2 id,'B' 部门,'乙' 责任人 from dual union select 3 id,'C' 部门,'丙' 责任人 from dual union select 4 id,'D' 部门,'甲' 责任人 from dual union select 5 id,'E' 部门,'丁' 责任人 from dual ) select * from t order by first_value(部门)over(partition by 责任人 order by 部门)

image.png

最佳回答
0
3333xzxLv4初级互助
发布于2023-9-25 14:53

SELECT * FROM ( SELECT *, CASE WHEN COUNT(*) OVER

 (PARTITION BY responsibility_person) >= 2 THEN 1 ELSE 2 END AS order_flag FROM your_table ) t 

ORDER BY order_flag, department;

先去算责任人数量之后  区分开 最后在外面再对部门进行排序 两步

  • 3关注人数
  • 326浏览人数
  • 最后回答于:2023-9-25 14:53
    请选择关闭问题的原因
    确定 取消
    返回顶部