我有一个表通过比较行
----------
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比较。我坚持创建nextend日期的第一部分,我相信比较的第二部分很容易。我陷入了两者之间。
我的问题是我做正确的事情,它变得相当复杂。 我很困惑是否通过sql查询得到结果,或者在使用Linq或类似的代码背后使用C#。
更新: 抱歉如果我不清楚在解释我的情况:我正在尝试查找客户已访问的次数。 ex: 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? – Donnie 2010-12-15 00:36:35
我没有看到你在这个游标循环中的任何地方计数。你能清楚地解释你试图得到什么吗?如果没有游标,很可能会有这种方法。 – cdonner 2010-12-15 00:46:31
版本SQL服务器2008. @cdonner我被困在创建nextenddate的第一部分,以便我可以与同一行中的nextenddate和enddate进行比较。如果我得到这个结果的权利,下一部分我会通过比较来计算,但我真的不想使用光标。有没有其他方法。谢谢。 – jero 2010-12-15 04:55:57