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

大家给我看看,这句SQL应该怎么写?

楼主SaiX(KID盗)2006-03-03 10:40:41 在 MS-SQL Server / 基础类 提问

组         班级             分数  
   
        甲         101               14  
       
        乙         140               15  
                    141               18  
   
        丙         230               20  
                    231               50  
                    232               60  
  要实际这两级的分组查询应如何写呀? 问题点数:50、回复次数:11Top

1 楼wgsasd311(自强不息)回复于 2006-03-03 10:43:40 得分 0

楼主说清楚点,你要得到什么要结果?Top

2 楼SaiX(KID盗)回复于 2006-03-03 10:46:49 得分 0

要得到的就是上面的图Top

3 楼SaiX(KID盗)回复于 2006-03-03 10:47:08 得分 0

结果如上  
  Top

4 楼lsqkeke(可可)回复于 2006-03-03 10:48:42 得分 0

select    
          组=(case    
                              when       班级   =   (select   top   1   销售日期   from   #   where     组=a.   组)  
                                      then   a.   组  
                              else  
                                      ''  
                      end),    
          班级,  
          分数  
  from   tb   aTop

5 楼lsqkeke(可可)回复于 2006-03-03 10:49:09 得分 40

select    
          组=(case    
                              when       班级   =   (select   top   1   班级   from   tb   where     组=a.   组)  
                                      then   a.   组  
                              else  
                                      ''  
                      end),    
          班级,  
          分数  
  from   tb   a  
  Top

6 楼lsqkeke(可可)回复于 2006-03-03 10:52:21 得分 0

declare   @a   table(组   varchar(10),班级   int,分数   int)  
  insert   @a  
  select       '甲',         101   ,             14   union   all  
  select     '乙',         140,               15       union   all  
  select       '乙',                 141   ,             18     union   all  
  select       '丙',       230     ,         20     union   all  
  select   '丙',               231   ,             50     union   all  
  select   '丙',               232     ,           60  
   
  select    
          组=(case    
                              when       班级   =   (select   top   1   班级   from   @a   where     组=a.   组)  
                                      then   a.   组  
                              else  
                                      ''  
                      end),    
          班级,  
          分数  
  from   @a   a  
   
  运行后就得楼主的结果Top

7 楼SaiX(KID盗)回复于 2006-03-03 10:57:40 得分 0

我这边组,班级,数分是一张表的,总是提示   "在选择列表中无效,因为该列未包含在聚合函数中,并且没有   GROUP   BY   子句。"Top

8 楼lsqkeke(可可)回复于 2006-03-03 11:11:49 得分 0

我的示例数据也是一张表啊   你把那个查询语句的@a   换成你个表名就可以了  
  注意:  
  from   @a   a   换成后的结果是:   from     表名   a  
  后面那个a   是你表的别名,不要删除掉Top

9 楼mingyuebin(明月)回复于 2006-03-03 11:16:33 得分 0

select   组=(case   when   not   exists(select   1   from   @a   where   组=a.组   and   班级<a.班级)   then   组   else   ''   end),班级,分数   from   @a   aTop

10 楼SaiX(KID盗)回复于 2006-03-03 11:17:30 得分 0

我可能刚才没说清楚,我表中可能班级有两个的话,统计时也要把它的分数加相成一个  
  如:  
  declare   @a   table(组   varchar(10),班级   int,分数   int)  
  insert   @a  
  select       '甲',         101   ,             14   union   all  
  select       '甲',         101   ,             60   union   all  
  select     '乙',         140,               15       union   all  
  select     '乙',         140,               30       union   all  
  select       '乙',                 141   ,             18     union   all  
  select       '丙',       230     ,         20     union   all  
  select   '丙',               231   ,             50     union   all  
  select   '丙',               232     ,           60  
  Top

11 楼SUNDATA(古灯)回复于 2006-03-03 12:00:37 得分 10

是这样的,关键在于分组,我测试过没问题。  
  create   table   ta(组   varchar(10),班级   int,分数   int)  
  insert   ta  
  select       '甲',         101   ,             14   union   all  
  select     '乙',         140,               15       union   all  
  select       '乙',                 141   ,             18     union   all  
  select       '丙',       230     ,         20     union   all  
  select   '丙',               231   ,             50     union   all  
  select   '丙',               232     ,           60  
   
  select   组=(  
  case   when   班级   =   (select   top   1   班级   from   ta   where     组=a.   组)  
                                      then   a.   组  
                              else  
                                      ''  
                      end  
  ),班级,分数   from   ta   a  
  group   by   组,班级,分数Top

相关问题

  • 这句sql应该怎么写?
  • 这个SQL语句应该怎么写?
  • 这句sql句子应该怎么写?
  • 这条sql语句应该怎么写?
  • 求助:着句SQL应该怎么写?
  • 这个SQL语言应该怎么写
  • 这句sql应该怎么写?
  • 这个SQL语句应该怎么写?
  • 这个sql语句应该怎么写??
  • 这条sql语句应该怎么写?

关键词

  • top
  • 班级
  • 组
  • 分数
  • 表
  • union allselect
  • tb
  • top1
  • 结果
  • case

得分解答快速导航

  • 帖主:SaiX
  • lsqkeke
  • SUNDATA

相关链接

  • SQL Server类图书

广告也精彩

反馈

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