| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 783 人关注过本帖
标题:这种数据处理用sql怎么写?
只看楼主 加入收藏
m19821223
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-4-25
收藏
 问题点数:0 回复次数:3 
这种数据处理用sql怎么写?
这种数据处理用sql怎么写?

诸位高手,我这道疑问是针对一个高校中的算课时量的例子,比如下面示例数据
Tname    Cname    Number    Class
Jim    Maths    60    计算机1班
Jim    Maths    120    计算机2班
Jim    Maths    180    计算机3班
Jim    physics    180    计算机3班
Jim    physics    120    计算机2班
bob    Maths    100    自动化1班
bob    computer 120    计算机2班

要求:如果一位老师教授有重复课,则将教授重复课的班人数最大的一行中xs列置1,这位老师这门课其

余的班所对应的xs列均为0.7,如果这名老师没有教授重复课,那么xs为1,这位老师的标准课时量是总课

时以xs(系数)列中的值,对于本例中,最后用sql server达到的效果就是把xs列置数如下:
Tname    Cname    Number    Class    xs
Jim    Maths    60    计算机1班    0.7
Jim    Maths    120    计算机2班    0.7
Jim    Maths    180    计算机3班    1
Jim    physics    180    计算机3班    1
Jim    physics    120    计算机2班    0.7
bob    Maths    100    自动化1班    1
bob    computer 120    计算机2班    1


请问怎么实现这一过程呢?因为实际的数据量很大,有好几万条,所以想寻求一种简单方法。希望大家做

出来了用我这例子实际运行一下看看能否通过,请不要想当然的写,谢谢
搜索更多相关主题的帖子: 这种数据处理 计算机 sql Maths Jim 
2008-04-25 01:35
wdliu
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-11-26
收藏
得分:0 
答复
CREATE FUNCTION FN_NAME1
(@Tname varchar(10),
 @Cname varchar(10),
 @Classs varchar(20))
RETURNS DECIMAL(15,3)
AS
BEGIN
DECLARE @Nmber int,@suzlt decimal(15,3)
SELECT @Nmber=Max(Number) FROM PDATA WHERE Tname=@Tname and Cname=@Cname
SELECT @suzlt=(CASE @Nmber WHEN Number THEN 1 ELSE 0.7 END) FROM PDATA WHERE Tname=@Tname and Cname=@Cname  and class=@Classs
RETURN @suzlt
END
SELECT Tname,Cname,Number,Class,dbo.fn_name1(Tname,Cname,class) FROM pdata
2008-04-25 10:06
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:0 
这个语句可以完成
update table1 set xs=0.7

update table1 set xs=1
where exists (
select tname,cname,max(number) as number from table1 t2
group by tname,cname
having table1.tname=tname and and max(number)=table1.number
)
2008-04-25 11:08
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:0 
这个语句可以实现
update table1 set xs=0.7

update table1 set xs=1
where exists (
select tname,cname,max(number) as number from table1 t2
group by tname,cname
having table1.tname=tname and and max(number)=table1.number
)
2008-04-25 11:08
快速回复:这种数据处理用sql怎么写?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016421 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved