近日处理客户的逻辑时需要一个有条件的自增长字段

比如表A中有两个字段a,b,现在需要对符合条件的记录,对a进行计数,并存在a中。

a      b
0      y
0      n
0      n
0      y

更改后需要达到的效果
a      b
1      y
0      n
0      n
2      y

当然,可以用游标实现,也许游标的效率比我下边的写法效率更高,但是游标不经常写,总感觉写起来麻烦,还是找点儿直观些的做法。

于是网上搜到一种解决办法,用临时表和while循环,借鉴下来写如下操作:

Temptable Update Method one
25     where id=@counter and b ='y'
26 
27     SET @crow=@crow+1
28     end
29     SELECT @counter=@counter+1
30 end


写了之后发现可以有改进的地方,于是就改了一下写法:

 

Code


 朋友们有什么更高效,更合适的写法,可以晒出来交流下。

=======

另 case when的两种写法:

SELECT A=CASE WHEN <CONDITION> THEN <STATEMENTS> [ELSE <STATEMENTS>] END FROM tableName

SELECT A= CASE <EXPRESSION> WHEN <value or expression> THEN <STATEMENTS> [ELSE <STATEMENTS>] END FROM tableName

posted on 2009-06-10 15:31  沉默的心  阅读(1323)  评论(0编辑  收藏  举报