2014年10月2日 星期四

迭代(iterate)資料表的每一個row

現在一個資料表用來記錄網頁瀏覽率:
























欄位[Views]為累加的瀏覽率, ItemId & ItemType 為頁面物件

現在想要詳細記錄每一個使用者的瀏覽時間, 因為之前沒有記錄使用者, 為了讓舊的瀏覽記錄沿用, 所以必須製作假資料, 例如資料表中的第二筆資料的[Views]為4, 則 insert 4筆假資料









備註 :

    1. 為了可以加入到entity framework, 所以加了 Id 當主鍵
    2. UserId 用 -1 代表匿名使用者, 表示沒有登入狀態下瀏覽網頁


T-SQL :


declare @i int
declare @max int -- 要產生幾筆資料
declare @itemId nvarchar(50)
declare @itemType nvarchar(50)
declare @createdOn datetime
declare cur CURSOR LOCAL for
    select ItemId, ItemType,[Views],ModifiedOn from PageViews

open cur
fetch next from cur into @itemId, @itemType, @max,@createdOn
while @@FETCH_STATUS = 0 begin
    set @i = 0
        while (@i<@max) begin
            insert into UserPageView (UserId,ItemId,ItemType,CreatedOn)
                 values (-1,@itemId,@itemType,@createdOn)
                 set @i = @i+-- 累加
        end
    fetch next from cur into @itemId, @itemType, @max,@createdOn
end
close cur
deallocate cur








沒有留言: