这个SQL查询怎么写啊?

Lamya 2006-03-01 02:39:49

有一个存储卫生评比的表,

id ClassId 得分 得分原因 时间(smalldatetime,显示分秒)

还有一个纪律评比表,
id ClassId 失分 失分原因 时间(smalldatetime)

现在要查出其中一个班级本周每天的卫生和纪律的总成绩:(一天可能得好几次分)

如下显示:
日期 卫生成绩 纪律成绩
星期1 12 23
星期2 23 14
星期3 12 13
求教这个SQL语句要怎么写?(可能有一天一分也没得)

Classid在存储过程中传参数,起始日期也可以用参数传。
...全文
109 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lamya 2006-03-01
  • 打赏
  • 举报
回复
历害!非常感谢!
logoes 2006-03-01
  • 打赏
  • 举报
回复
declare @t1 table(id int identity(1,1), ClassId int, 得分 int, 得分原因 nvarchar(255), 时间 smalldatetime)
declare @t2 table(id int identity(1,1), ClassId int, 失分 int, 失分原因 nvarchar(255), 时间 smalldatetime)

insert into @t1 (classid,得分,时间) values(1,10,'2006-3-1')
insert into @t1 (classid,得分,时间) values(1,5,'2006-3-1')
insert into @t1 (classid,得分,时间) values(2,5,'2006-3-1')
insert into @t1 (classid,得分,时间) values(2,5,'2006-3-2')
insert into @t1 (classid,得分,时间) values(1,5,'2006-3-2')
insert into @t2 (classid,失分,时间) values(1,10,'2006-3-1')
insert into @t2 (classid,失分,时间) values(1,20,'2006-3-1')
--insert into @t2 (classid,失分,时间) values(2,5,'2006-3-1')
insert into @t2 (classid,失分,时间) values(2,5,'2006-3-2')
insert into @t2 (classid,失分,时间) values(1,5,'2006-3-2')

declare @Startd smalldatetime
declare @cId int

set @cid=2
set @startd=getdate()
select wd,sum(卫生成绩) 卫生成绩,sum(纪律成绩) 纪律成绩 from
(select datepart(dw,时间) as wd,得分 as 卫生成绩,0 as 纪律成绩 from @T1 where classid=@cid and datediff(wk,时间,@startd)=0
union all
select datepart(dw,时间) as wd,0 as 卫生成绩,失分 as 纪律成绩 from @T2 where classid=@cid and datediff(wk,时间,@startd)=0
) b
group by wd

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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