【发布时间】:2010-12-15 00:35:32
【问题描述】:
我有一张桌子
----------
User
----------
userID(pk)
startdate // update : i am not using this field.
enddate
我需要比较行之间的 end_dates 是否超过 3 天并计算用户 ID。
我正在做类似的事情
WHILE @@FETCH_STATUS = 0
BEGIN
select @lastrowID = max(rowid) from @User
if (@userid = (select userId from @User where rowid = @lastRowID))
begin
update @User set NextEndDate= @endDate where rowid = @lastRowID and userid = @userid
end
else
begin
insert @UserTable (userid, EndDate,NextEndDate) values (@userid, @endDate,@NextEndDate)
end
END
我的想法是循环表格并创建下一个结束日期,然后使用 datediff 查找比较。我坚持创建下一个结束日期的第一部分,我相信比较的第二部分会很容易。我被困在两者之间。
我的问题是我做的事情是否正确,它变得相当复杂。 我很困惑是通过 sql 查询获得结果还是在代码后面使用 Linq 或类似的东西使用 C#。
更新: 抱歉,如果我在解释我的情况时不清楚:我正在尝试查找客户访问过的次数。 前任: userid: 1 可能每天或每月访问一次。所以我需要得到计数(用户访问的频率)。所以如果用户访问结束日期是
userid enddate
1 1/1/2010
1 1/2/2010 count 1
1 1/10/2010 count 2 difference is more than 3 days
1 1/13/2010 count 2 ( because diff is less than 3 days)
这就是我应该如何计算的,那是我试图使用游标,这对我来说太复杂了,无法解决。感谢您的指导。
【问题讨论】:
-
我没有看到你在这个游标循环中的任何地方进行计数。你能清楚地解释你想要得到什么吗?很可能有一种方法可以在没有光标的情况下做到这一点。
-
版本 sql server 2008。@cdonner 我被困在创建 nextenddate 的第一部分,以便我可以与同一行中的 nextenddate 和 enddate 进行比较。如果我得到正确的结果,下一部分我会通过比较来计算,但我真的不想使用光标。有没有其他办法。谢谢。
标签: c# sql linq tsql sql-server-2008