这样的T-SQL语句怎么写,请赐教

jingmaomao 2013-08-27 12:31:13


表A B ,A成绩表(id,name,xueke,chengji),学科为英语 语文 数学, B 总分平均分表(id ,name ,zongfen ,pingjunfen)


输入完表A后,根据ID自动计算总分和平均分,插入表B中。

...全文
160 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
字朕名君 2013-08-28
  • 打赏
  • 举报
回复
SUM avg 触发器简单方便 上边写的都挺好
Andy__Huang 2013-08-27
  • 打赏
  • 举报
回复
修正:xueke-->chengji
insert into B总分平均分表(id ,name ,zongfen ,pingjunfen)
select id,name,sum(chengji),avg(chengji)
from A成绩表
group by id,name
Andy__Huang 2013-08-27
  • 打赏
  • 举报
回复
insert into B总分平均分表(id ,name ,zongfen ,pingjunfen)
select id,name,sum(xueke),avg(xueke)
from A成绩表
group by id,name
KeepSayingNo 2013-08-27
  • 打赏
  • 举报
回复
不好意思,请将table5改为B
KeepSayingNo 2013-08-27
  • 打赏
  • 举报
回复
帮楼主写了一个触发器,可以实现当A表中插入成绩数据时,B表可以自动更新总分和平均分。请在A表建立下面的触发器

CREATE TRIGGER [dbo].[tr_stat]
   ON  [dbo].[A]
   AFTER insert
AS 
BEGIN
    update table5 set zongfen=a.zongfen,pingjunfen=a.pingjunfen
    from
    (
		select t.id,t.name,sum(chengji) as zongfen ,avg(chengji) as pingjunfen from
		(
			select inserted.* from inserted 
			inner join B on inserted.id=B.id
			union 
			select A.* from A 
			inner join B on A.id=B.id
		)t group by t.id,t.name
    ) a inner join B on B.id=a.id
    

	insert into B 
	select t.id,t.name,t.chengji,t.chengji from inserted t
	left join B a on t.id=a.id
	where a.id is null
END
---涛声依旧--- 2013-08-27
  • 打赏
  • 举报
回复
wwwwgou真细心啊,平均分数须考虑小数点:AVG(1.0*chengji)
  • 打赏
  • 举报
回复
想要自动的话写个触发器,如果有插入数据了,直接更新平均分数表就行了。
Shawn 2013-08-27
  • 打赏
  • 举报
回复
INSERT INTO B表
(
	id,
	name,
	zongfen,
	pingjunfen
)
SELECT
	id, 
	name,
	SUM(chengji),
	CAST(AVG(1.0*chengji) AS DECIMAL(10,1))
FROM A表
GROUP BY id, name

34,587

社区成员

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

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