SQL的排序问题

zhousq00 2010-09-07 11:40:28
有学生成绩表(S_TB):
ID S_Name S_Score S_Banji
1 张三 89 4
2 李丽 91 3
3 赵六 88 4
4 王五 92 3
5 钱六 93 2
6 孙七 94 5

要实现的是,4班(不包括4班)之前的按分数排列,显示在上面,4班(包括4班)之后的排列在下面
即:2、3班的按分数从高到低排列,4、5班的按分数从高到低排列,一起显示
怎么用一条语句实现?

(列出的数据有限,请不要在列出的数据上找解决方案)
...全文
65 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_Nice 2010-09-07
  • 打赏
  • 举报
回复
with TT
as(
select num = case when s_banji<4 then 0 else 1 end ,* from TB)

select id,S_name,S_score,s_banji
from TT
order by num,S_score desc


/*
id S_name S_score s_banji
5 钱六 93 2
4 王五 92 3
2 李丽 91 3
6 孙七 94 5
1 张三 89 4
3 赵六 88 4*/


这样?
就是just4 2010-09-07
  • 打赏
  • 举报
回复
IF OBJECT_ID('s_tb') IS NOT NULL DROP TABLE s_tb
CREATE TABLE s_tb(id INT,s_name VARCHAR(30),s_score DECIMAL(18,0),s_banji INT)

INSERT INTO s_tb(id,s_name,s_score,s_banji)
select 1,'张三',89,4 union all
select 2,'李丽',91,3 union all
select 3,'赵六',88,4 union all
select 4,'王五',92,3 union all
select 5,'钱六',93,2 union all
select 6,'孙七',94,5

SELECT s.id,s_name,s.s_score,s.s_banji FROM s_tb AS s WHERE s.s_banji < 4 UNION ALL
SELECT s.id,s_name,s.s_score,s.s_banji FROM s_tb AS s WHERE s.s_banji >= 4 ORDER BY s.s_score DESC
/*
id s_name s_score s_banji
----------- ------------------------------ -------------------- -----------
6 孙七 94 5
5 钱六 93 2
4 王五 92 3
2 李丽 91 3
1 张三 89 4
3 赵六 88 4
*/
zhousq00 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 orchidcat 的回复:]
SQL code
--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
create table [TB]([ID] int,[S_Name] varchar(4),[S_Score] int,[S_Banji] int)
insert [TB]
select 1,'张三',89,4 union all
selec……
[/Quote]
NO,不是这样,班级不参与排序的
Mr_Nice 2010-09-07
  • 打赏
  • 举报
回复
--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
create table [TB]([ID] int,[S_Name] varchar(4),[S_Score] int,[S_Banji] int)
insert [TB]
select 1,'张三',89,4 union all
select 2,'李丽',91,3 union all
select 3,'赵六',88,4 union all
select 4,'王五',92,3 union all
select 5,'钱六',93,2 union all
select 6,'孙七',94,5

select * from [TB]

select * from TB
order by s_banji,s_score desc

/*
ID S_Name S_Score S_Banji
5 钱六 93 2
4 王五 92 3
2 李丽 91 3
1 张三 89 4
3 赵六 88 4
6 孙七 94 5*/


这样?
zhousq00 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 happy_stone 的回复:]
都是按照从高到低?
[/Quote]
恩,班级可能会很多,人数也可能回很多,列出的数据只是做个例子
快乐_石头 2010-09-07
  • 打赏
  • 举报
回复
都是按照从高到低?
bean_sql 2010-09-07
  • 打赏
  • 举报
回复

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧