union all 排序问题
时间:2011-11-16
来源:互联网
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='登陆者的部门' 的效果,也没有达到这样的目的,请问大家怎么办?非常感谢!
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='登陆者的部门' 的效果,也没有达到这样的目的,请问大家怎么办?非常感谢!
作者: oceanmeng 发布时间: 2011-11-16
SQL code
select * from V_Emp where DepartID='登陆者的部门' ORDER BY CASE WHEN GroupID='登陆者所在专业组' THEN 1 ELSE 2 END asc
作者: roy_88 发布时间: 2011-11-16
用一個case when 就行了
union all--這樣用效率低
union all--這樣用效率低
作者: roy_88 发布时间: 2011-11-16
try:
SQL code
SQL code
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
作者: qianjin036a 发布时间: 2011-11-16
or:
SQL code
SQL code
select * from V_Emp where DepartID='登陆者的部门' order by (case when DepartID='登陆者的部门' then '' else DepartID end), (case when GroupID='登陆者所在专业组' then '' else GroupID end),empName
作者: qianjin036a 发布时间: 2011-11-16
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28