我想创建一个FOR循环的等效项。我在SQL中需要这个。我的目标是创建一个名为“差异”的新列,该列计算每行结束与下一行开始之间的日期差异(以天为单位)。本质上,我需要知道每个personID的合同是否有中断。从最小到最大的RowID定义了与特定组织的合同,例如与一个组织的每个新合同都以1开头。
我的桌子是:
我编写的SQL代码是:
select RowID, start_contract, end_contract from table
open the_cursor
fetch next from the_cursor into @id
while @@FETCH_STATUS = 0
begin
select
DATEDIFF(DAY, (select end_contract from table where RowID = @id-1),
(select start_contract from t where RowID = @id)) AS [Difference]
if (select RowID from t) = 1
break
else
continue
fetch next from the_cursor into @id
end
close the_cursor
deallocate the_cursor
但是我得到一个错误:
Cursorfetch:在INTO列表中声明的变量数量必须与所选列的数量匹配。
有人可以帮我吗?
非常感谢。
答案 0 :(得分:1)
尝试一下:
select DATEDIFF(DAY, T.end_contract T.start_contract) AS [Difference], T.personID
from table T join table TT on TT.personID=t.personID
where TT.rowID = T.rowID + 1