我有一個表通過比較行
----------
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