我需要遍历表中的每一行来执行某些操作。该表的主键是GUID标识符,因此我无法在循环中使用它。这就是我到目前为止所做的:
DECLARE @RowCount INT
SET @RowCount = (SELECT COUNT(EmploymentIdentifier) FROM tblEmployment)
DECLARE @I INT
SET @I = 1
WHILE (@I <= @RowCount)
BEGIN
--Just some variables I'll be using later
DECLARE @PaymentTypeOld int, @PaymentTypeNew uniqueidentifier
-- How do I select each unique row here? I'm stuck at:
SELECT TOP 1 FROM tblEmployment WHERE EmploymentIdentifier == ???
//Logic goes here..
SET @I = @I + 1
END
我尝试使用ROW_NUMBER()
,但是在使用OVER时出现语法错误。
只要处理表中的所有行,处理行的顺序并不重要。
答案 0 :(得分:1)
当col1的值为1时,这只会设置myField =当前值* 2.当col1的值为2时,myfield将乘以3.如果col1是其他任何内容,则myField保持不变。
Update myTable set MyField = Case when Col1 = 1 then MyField*2
When Col1 = 2 then MyField*3
else myfield end
你也可以做多个条件......
现在,在我们将结果乘以2之前,Col1必须为1
且col2必须为N
。
Update myTable set MyField = Case when Col1 = 1 and Col2 ='N' then MyField*2
else MyField end
它可能是一个简单的where子句,如果我们只需要将某些记录更新为特定值,但是如果所有记录都必须更新并且更新因记录而异,那么减少处理记录的开销似乎是最有效的,然后案件陈述是要走的路..
当col1为1时,这只是将myField乘以2。
Update mytable set myField = myField*2 where col1=1