关于班级人数的查询的sql语句

mp866 2010-10-06 09:03:10
表结构

班级名 , 上课时间,人数
1 , 2010-10-5 ,4
1 , 2010-9-5, 5
1 , 2010-10-6,6
我想查的结果是:
班级名,人数,和上次课人数的差

查询班级这次课的记录时候,想把这次的人数与上次课人数的差也查询出来sql怎么写啊?
...全文
348 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hovy_yang 2010-10-06
1楼正解

if object_id('tb') is not null drop table tb
-- 创建数据表
create table tb
(
班级名 int,
上课时间 datetime,
人数 int
)
go
--插入测试数据
insert into tb select 1,'2010-10-5',4
union all select 1,'2010-9-5',5
union all select 1,'2010-10-6',6
go
--代码实现

select 班级名,人数
,和上次课人数的差=人数-isnull((
select top 1 人数
from tb
where 班级名=t.班级名 and 上课时间<t.上课时间
order by 上课时间 desc),0)
from tb t
order by 上课时间 desc

班级名 人数 和上次课人数的差
---------------------------------
1 6 2
1 4 -1
1 5 5
回复
yubofighting 2010-10-06
[Quote=引用 1 楼 happycell188 的回复:]
SQL code
use test
go
if object_id('test.dbo.tb') is not null drop table tb
-- 创建数据表
create table tb
(
班级名 int,
上课时间 datetime,
人数 int
)
go
--插入测试数据
insert into tb select 1,'2010-10-5',4
u……
[/Quote]

此乃正解!
回复
siegebaoniu 2010-10-06
顶一楼!
回复
siegebaoniu 2010-10-06
/*
1 1 2010-09-05 00:00:00.000 5 5
2 1 2010-10-05 00:00:00.000 4 -1
3 1 2010-10-06 00:00:00.000 6 2
*/
回复
siegebaoniu 2010-10-06
/*if object_id('S') is not null drop table S
create table S(classid int,classtime datetime,num int)
insert into S
select 1,'2010-10-5',4 union all
select 1,'2010-9-5',5 union all
select 1,'2010-10-6',6*/

with t as (select idd=row_number() over (order by classtime),* from S)
select t.*,和上次课人数的差=t.num-isnull(a.num,0) from t left join t a on t.idd=a.idd+1
回复
喜-喜 2010-10-06
use test
go
if object_id('test.dbo.tb') is not null drop table tb
-- 创建数据表
create table tb
(
班级名 int,
上课时间 datetime,
人数 int
)
go
--插入测试数据
insert into tb select 1,'2010-10-5',4
union all select 1,'2010-9-5',5
union all select 1,'2010-10-6',6
go
--代码实现

select 班级名,人数
,和上次课人数的差=人数-isnull((
select top 1 人数
from tb
where 班级名=t.班级名 and 上课时间<t.上课时间
order by 上课时间 desc),0)
from tb t

/*测试结果

班级名 人数 和上次课人数的差
---------------------------------
1 4 -1
1 5 5
1 6 2

(3 行受影响)
*/
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-06 09:03
社区公告
暂无公告