CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

求一个复杂的游标?请大哥们帮们啊!

楼主lgcandywen(1232131)2006-08-01 00:16:05 在 MS-SQL Server / 基础类 提问

Declare   @AdvCodeCount     int  
  Declare   @AdvCode     VarChar(20)  
  DECLARE   test2   CURSOR  
        FOR   Insert   into   #TempAdvCodeCount   select   count(classcode)codecount,classcode     from   adv   group   by   classcode  
                select   classcode   from   #TempAdvCodeCount   where   codecount>=2  
                select   AboutId,classcode   from   adv   where   classcode=@classcode\\以上三条语句目的要得到codecount>=2   的数据集@classcode,@AboutId  
  OPEN   test2  
  FETCH   NEXT   FROM   test2   INTO   @classcode,@AboutId  
  WHILE   (@@FETCH_STATUS   =   0)  
  begin  
  update   adv   set   ifuse=0   where   classcode=@classcode  
  select   max(AboutId)   MaxAbutId   from   adv   where   classcode=@classcode   return   MaxAbutId  
  update   adv   set   ifuse=1   where   (select   top   1   *   from   adv   where     classcode=@classcode   and   (if   @AboutId=MaxAboutId   then   AboutId=0   else   AboutId>@AboutId)   order   by   AdvId   desc)\\其意思先将相同classcode的数据将ifuse都设为0,然后再得到max(AboutId),然后再按照条件更新classcode=@classcode   and   (if   @AboutId=MaxAboutId   then   AboutId=0   else   AboutId>@AboutId)    
  close   test2  
  DEALLOCATE   test2  
  我所要的效果在注释大概意思写了出来,请问用游标如何正确表达,谢谢(共两贴50分) 问题点数:50、回复次数:8Top

1 楼fcuandy(了此残生.)回复于 2006-08-01 00:23:47 得分 0

你把表结构,源示例数据,查询要求,结果示例数据列出来.  
   
  给段代码我看,   如果你自己代码逻辑不清楚或者什么的,还不看的我晕啊.  
   
  晚了,早点休息.明天再看.Top

2 楼jacky_majia_001()回复于 2006-08-01 08:03:09 得分 0

upTop

3 楼Haiwer(海阔天空)回复于 2006-08-01 08:19:23 得分 0

游标定义这么写  
   
  DECLARE   test2   CURSOR  
        FOR   select   count(classcode),classcode     from   adv   group   by   classcode   having   count(classcode)>=2  
   
  OPEN   test2  
  Top

4 楼Haiwer(海阔天空)回复于 2006-08-01 08:20:10 得分 0

后面的看不懂  
  Top

5 楼zjdyzwx(十一月猪)回复于 2006-08-01 08:24:13 得分 0

lz看看帮助吧Top

6 楼lgcandywen(1232131)回复于 2006-08-01 08:25:09 得分 0

后面是这样的  
  @classcode这个末定义,select   max(AboutId)   MaxAbutId   from   adv   where   classcode=@classcode   classcode相同数据中打abutid的最大值,请问MaxAbutId这个值如何取啊?(if   @AboutId=MaxAboutId   then   AboutId=0   else   AboutId>@AboutId)     这个在sql里如何表达?这顶一顶Top

7 楼Haiwer(海阔天空)回复于 2006-08-01 08:40:21 得分 0

还是这样表达没办法理解的  
   
  Top

8 楼lgcandywen(1232131)回复于 2006-08-01 08:46:23 得分 0

MaxAbutId   如数据   AbutId   0,1,2,3   classcode   48,48,48   相同classcode的数据取MaxAbutId(这里为3),得到MaxAbutId到下一条SQL作判断?(if   @AboutId=MaxAboutId   then   AboutId=0   else   AboutId>@AboutId)Top

相关问题

关键词

得分解答快速导航

  • 帖主:lgcandywen

相关链接

  • SQL Server类图书

广告也精彩

反馈

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