CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

求一句有点难度的SQL语句,各位高手进来帮帮我!!

楼主java1987(GOGOGO)2005-12-14 16:55:16 在 MS-SQL Server / 基础类 提问

name(名称)         (jb)级别  
   
    A                             1  
    A                             2                                     ---表AB1  
    A                             3  
    B                             1  
   
  算出每个名称   级别个数    
  结果:  
   
  name       a1         a2       a3  
   
    A               1         1       1                             --表AB2  
    B               1         0       0      
   
  我想把表A数据查出来   以上面结果的形式添进表A2请各位帮忙了!  
  --测试环境!!!!  
  create   table   ab1  
  (name   char,  
    jb   int)  
  go  
  insert   a1  
  select   'A',1   UNION   ALL  
  select   'A',2   UNION   ALL  
  select   'A',3   UNION   ALL  
  select   'B',1    
  go  
  create   table   ab2  
  (name   char,a1   int   default   0   ,a2   int   default   0   ,a3   int   default   0)  
  go 问题点数:30、回复次数:8Top

1 楼java1987(GOGOGO)回复于 2005-12-14 23:14:36 得分 0

请各位高手帮帮忙啊     小弟急     在线等啊!Top

2 楼liuxue88(LiuXue)回复于 2005-12-15 00:08:46 得分 0

declare   @AB1_name   varchar(20),@AB1_jb   varchar(20)  
  declare   acursor   cursor   for   select   *   from   AB1  
  open   acursor  
  fetch   next   from   acursor   into   @AB1_name,@AB1_jb  
  while   @@FETCH_STATUS   =   0  
  begin  
  if   not   exists   (select   *   from   AB2   where   name=@AB1_name   )  
  begin  
  insert   AB2   (name)   values   (@AB1_name)  
  end  
  if   @AB1_jb   =   1    
  update   AB2   set   a1=1  
  if   @AB1_jb   =   2    
  update   AB2   set   a2=1  
  if   @AB1_jb   =   3    
  update   AB2   set   a3=1  
  fetch   next   from   acursor   into   @AB1_name,@AB1_jb  
  end  
  close   acursor  
  deallocate   acursor  
  ---------------------------------  
  应该不是最好的方法,不过可以得到你要的结果。我是SQL新手,只会这样的笨法了:-)Top

3 楼lxzm1001(*~悠悠蓝星梦~*)回复于 2005-12-15 08:22:03 得分 10

select   *   from   ab1  
  select   name,a1=sum(case   when   jb=1   then   1   else   ''   end),a2=sum(case   when   name='a'   and   jb=2   then   1   else   ''   end),  
  a3=sum(case   when   name='a'   and   jb=3   then   1   else   ''   end)  
  from   ab1   group   by   nameTop

4 楼lsqkeke(可可)回复于 2005-12-15 08:46:08 得分 0

insert   into   ab2  
  select   name,a1=sum(case   jb   when   1   then   1   else   0   end),a2=sum(case   jb   when   2     then   1   else   0   end),  
  a3=sum(case   ib   when   3   then   1   else   0   end)  
  from   ab1   group   by   nameTop

5 楼lsqkeke(可可)回复于 2005-12-15 08:47:40 得分 0

写错个字段:   改下  
  insert   into   ab2  
  select   name,a1=sum(case   jb   when   1   then   1   else   0   end),a2=sum(case   jb   when   2     then   1   else   0   end),  
  a3=sum(case   jb   when   3   then   1   else   0   end)  
  from   ab1   group   by   nameTop

6 楼lxw99(十五天少爷(笑看风云))回复于 2005-12-15 10:58:37 得分 0

我觉得以上都不是完全之法  
   
    SQL   Server   啊   努力   奋斗-----------------------------------------------------  
   
  Top

7 楼lxw99(十五天少爷(笑看风云))回复于 2005-12-15 10:59:01 得分 0

我觉得以上都不是完全之法a在有个4,5,6  
   
    SQL   Server   啊   努力   奋斗-----------------------------------------------------  
   
  Top

8 楼hpym365(君子爱财,取之有道.)回复于 2005-12-15 13:40:31 得分 20

insert   into   ab2  
  select   name,a1=sum(case   when   jb=1   then   1   else   ''   end),a2=sum(case   when   name=aa.name   and   jb=2   then   1   else   ''   end),  
  a3=sum(case   when   name=aa.name   and   jb=3   then   1   else   ''   end)  
  from   a1   aa   group   by   name  
  这个一定对   看看吧Top

相关问题

  • 超难度sql 语句
  • 超难度sql 语句
  • 超难度SQL语句
  • 超难度sql语句
  • 超难度sql语句
  • 求SQL语句(有难度)???
  • 求高难度SQL语句
  • 百分求助高难度SQL语句!(只能用SQL语句!)
  • 一个高难度的SQL语句
  • 一个有难度的SQL语句!

关键词

  • sql
  • ab
  • jb
  • acursor
  • then1else
  • sum
  • update ab2set
  • 表
  • union allselect
  • 法

得分解答快速导航

  • 帖主:java1987
  • lxzm1001
  • hpym365

相关链接

  • SQL Server类图书

广告也精彩

反馈

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