CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

帮我写一个SQL语句

楼主zhouxinjie(zhouwei)2004-09-04 12:56:24 在 MS-SQL Server / 应用实例 提问

我有两个表  
  表1  
  stu_num       course_code       course_score  
  0001               123                             85  
  0001               125                             75    
  0001               126                             98  
  0002                 123                             78  
  0002                   125                           74  
  0002                   126                           84  
   
  表2  
  stu_num       course_code       course_score  
   
  我想将表1中每个人的course_score的最高2条记录给插入到表2中  
   
  结果为:  
  stu_num       course_code       course_score  
  0001               123                             85    
  0001               126                             98  
  0002                 123                             78  
  0002                   126                           84  
  问题点数:0、回复次数:8Top

1 楼yesterday2000(一笑而过)回复于 2004-09-04 13:06:04 得分 0

insert   into   表2  
  select   stu_num,course_code,course_score   from   表1   a   where   a.stu_num     in   (select   top   2   stu_num   from   表1   where   stu_num=a.stu_num    
    order   by   stu_num   desc,course_score   desc)   order   by   stu_num   desc,course_score   descTop

2 楼yesterday2000(一笑而过)回复于 2004-09-04 13:11:47 得分 0

我上面的写错了  
  select   stu_num,course_code,course_score   from   pm   a   where   a.course_code   in   (select   top   2   course_code   from   pm   where   stu_num=a.stu_num    
    order   by   stu_num   desc,course_score   desc)   order   by   stu_num   ,course_score   desc  
  Top

3 楼yesterday2000(一笑而过)回复于 2004-09-04 13:13:05 得分 0

 
  create   table   pm   (stu_num   char   (4),course_code   char   (3),course_score   decimal   (12,2))  
   
  insert   into   pm    
  select   0001         ,       123             ,                 85  
  union  
  select   0001           ,     125               ,               75      
  union  
  select   0001           ,     126                   ,           98  
  union  
  select   0002             ,     123       ,                       78  
  union  
  select   0002                 ,   125                   ,         74  
  union  
  select   0002       ,           126           ,                 84  
   
  insert   into   表2  
  select   stu_num,course_code,course_score   from   pm   a   where   a.course_code   in   (select   top   2   course_code   from   pm   where   stu_num=a.stu_num    
    order   by   stu_num   desc,course_score   desc)   order   by   stu_num   ,course_score    
   
  select   *   from   表2    
   
  -----------  
  stu_num       course_code       course_score  
  -------       -----------       ------------  
  0001               123                             85    
  0001               126                             98  
  0002               123                             78  
  0002               126                             84Top

4 楼wenqiangs1(aa)回复于 2004-09-04 15:18:56 得分 0

一笑而过,厉害了,用子查询调出stu_num       的TOP   2   简直高人一筹,佩服佩服Top

5 楼zhouxinjie(zhouwei)回复于 2004-09-04 17:30:02 得分 0

假如表1中记录中stu_num,course_code中有重复的情况怎么办?  
  stu_num       course_code       course_score  
  0001               123                             85  
  0001               125                             75    
  0001               126                             98  
  0001               123                             60                   后有增加的记录  
  0002                 123                             78  
  0002                   125                           74  
  0002                   126                           84  
  不知道这样改怎么处理!Top

6 楼qiliu(痴心求学)回复于 2004-09-04 17:55:55 得分 0

建立临时表,增加不重复的一列  
  替换course_codeTop

7 楼yesterday2000(一笑而过)回复于 2004-09-04 18:03:05 得分 0

你是达到你想要的效果是吗?  
   
  insert   into   表2  
  select   stu_num,course_code,max(course_score)   as   course_score     from   pm   a   where   a.course_code   in   (select   top   2   course_code   from   pm   where   stu_num=a.stu_num    
    order   by   stu_num   desc,course_score   desc)    
  group   by   stu_num,course_code   order   by   stu_num   ,course_scoreTop

8 楼bernice99(宝宝)回复于 2004-09-06 18:17:28 得分 0

 
  insert   into   table2  
  select   stu_num,course_code,course_score   from   table1   where   course_score   in   (select   top   2   course_score   from   table1   group   by   stu_num   order   by   stu_num,couese_score   desc)    
  order   by   stu_num,course_scoreTop

相关问题

  • 帮写一个sql语句
  • 帮我写条SQL语句????
  • 帮忙写条SQL语句
  • 帮写个SQL语句
  • 帮写两条SQL语句
  • $$$$$$$$ 帮写个SQL语句!
  • 写SQL语句???
  • 求写SQL语句
  • 求写SQL语句,
  • $$求写SQL语句$$

关键词

  • code
  • pm
  • top
  • stu
  • course
  • score
  • num
  • desc
  • order
  • where

得分解答快速导航

  • 帖主:zhouxinjie

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo