求一个复杂的游标?请大哥们帮们啊!
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




