如何通过条件重置增量? [英] How do I reset the increment through condition?
本文介绍了如何通过条件重置增量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
DECLARE @intFlag INT
SET @intFlag = 1
UPDATE #temp_patrons
set
@intFlag = [order] = @intFlag + 1
IF @intFlag = 3
BEGIN
SET @intFlag = 1
END
我尝试了什么:
i尝试使用循环或案例但没有发生任何事情。
输出将像这个。
EX。
|订购|
| 1 |
| 2 |
| 3 |
| 1 |
| 2 |
| 3 |
解决方案
你可以这样做吗?
1.增加旗帜
2.如果flag = 3,重置为1
3.更新操作
SET @intFlag = @ intFlag + 1
IF ( @ intFlag = 3 )
SET @ intFlag = 1
更新 #temp_patrons
SET [ order ] = @ intFlag
无循环,无需IF:
更新 x SET x。[ 订单] = x.NewOrder
FROM ( SELECT [订单],((ROW_NUMBER() OVER ( ORDER BY myOrderingColumnName) - 1 )% 3 )+ 1 AS NewOrder
FROM MyTable)x;
DECLARE @intFlag INT SET @intFlag = 1 UPDATE #temp_patrons set @intFlag = [order] = @intFlag + 1 IF @intFlag = 3 BEGIN SET @intFlag = 1 END
What I have tried:
i tried using loop or cases but nothing happened.
The output will be like this.
EX. | order | | 1 | | 2 | | 3 | | 1 | | 2 | | 3 |
解决方案
Can you do something like below?
1. Increment the flag
2. If flag = 3, reset to 1
3. Update operation
SET @intFlag = @intFlag + 1 IF (@intFlag = 3) SET @intFlag = 1 UPDATE #temp_patrons SET [order] = @intFlag
No loops, no IF required:
UPDATE x SET x.[Order] = x.NewOrder FROM (SELECT [Order], ((ROW_NUMBER() OVER(ORDER BY myOrderingColumnName) - 1) % 3) + 1 AS NewOrder FROM MyTable) x;
这篇关于如何通过条件重置增量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文