首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

这样的T-SQL语句如何写,请赐教

2013-09-05 
这样的T-SQL语句怎么写,请赐教表A B ,A成绩表(id,name,xueke,chengji),学科为英语 语文 数学, B 总分平均

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


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


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


[解决办法]

insert into B总分平均分表(id ,name ,zongfen ,pingjunfen)
select id,name,sum(xueke),avg(xueke)
from A成绩表
group by id,name

[解决办法]
修正:xueke-->chengji

insert into B总分平均分表(id ,name ,zongfen ,pingjunfen)
select id,name,sum(chengji),avg(chengji)
from A成绩表
group by id,name


[解决办法]
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

[解决办法]
想要自动的话写个触发器,如果有插入数据了,直接更新平均分数表就行了。
[解决办法]
wwwwgou真细心啊,平均分数须考虑小数点:AVG(1.0*chengji)

[解决办法]
帮楼主写了一个触发器,可以实现当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

热点排行
Bad Request.