union all 排序问题

sql server2000数据库试图V_Emp(员工试图)已经按照部门、所在专业组、姓名进行了排序(order by DepartID,GroupID,EmpName),如:
ID,EmpName,      DepartID,GroupID,。。。。
001      001姓名             部门1       组1
004      004姓名             部门1       组1
101      101姓名             部门1       组2
103      103姓名             部门1       组2
106      106姓名             部门2       组1
119      119姓名             部门2       组1
121      121姓名             部门2       组1
221      221姓名             部门2       组2
现在,我想在B/S页面中实现如下员工一览表页面效果:默认页面显示登陆者的部门员工,且把登陆者所在专业组的人员信息排在前面,要求所在专业组的人员信息也按姓名排序,排在后面的专业组也要符合专业组、姓名排序规则,计划采用sql如下:
select top 100 percent * from V_Emp where DepartID='登陆者的部门' and GroupID='登陆者所在专业组'
union all
select top 100 percent * from V_Emp where DepartID='登陆者的部门' and GroupID<>'登陆者所在专业组'
但发现这样出来的效果不是想要达到的,排序规则乱了。

若改为:
select * from V_Emp where DepartID='登陆者的部门' and GroupID='登陆者所在专业组'
union all
select * from V_Emp where DepartID='登陆者的部门' and GroupID<>'登陆者所在专业组'
这样出现的就是select * from V_Emp where DepartID='登陆者的部门'  的效果,也没有达到这样的目的,请问大家怎么办?非常感谢!

 

2
select  * from V_Emp where DepartID= '登陆者的部门'
ORDER BY  CASE WHEN  GroupID= '登陆者所在专业组' THEN 1 ELSE 2 END asc

 

 

 

select top 100 percent * from V_Emp where DepartID= '登陆者的部门' and GroupID= '登陆者所在专业组'
union all
select top 100 percent * from V_Emp where DepartID= '登陆者的部门' and GroupID<> '登陆者所在专业组'
order by ( case when DepartID= '登陆者的部门' then '' else DepartID end ),( case when GroupID= '登陆者所在专业组' then '' else GroupID end),empName

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值