如何通过条件重置增量? [英] How do I reset the increment through condition?

查看:83
本文介绍了如何通过条件重置增量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆