2012-02-13 29 views
0

我有一個表格,其中包含用戶對特定頁面的頁面查看時間戳。我需要列出用戶查看的獨特頁面,如果用戶多次訪問同一頁面,我需要獲取該地段的最新記錄。獲取記錄的不同值,但在選擇語句中也有其他記錄

例如:表tblUserPageViews,我有列

PAGEURL,時間戳,用戶名,UserPageViewsID

我已經嘗試了明顯

SELECT Distinct(PageURL),TimeStamp,UserID,UserPageViewsID FROM tblUserPageViews 

這是不行的

任何想法非常讚賞。 謝謝。

回答

0

嘗試全行本

SELECT PageURL, UserID, UserPageViewsID, MAX(TimeStamp) TimeStamp 
FROM tblUserPageViews 
GROUP BY PageURL, UserID, UserPageViewsID 
0
SELECT MAX(PageURL), 
MAX(TimeStamp), 
MAX(UserID), 
SUM(UserPageViewsID) 
FROM tblUserPageViews 
GROUP BY PageURL 
+0

這將符合您的需求在我看來。 – Sagi 2012-02-13 06:50:09

+0

感謝您的回答。我會嘗試他們。我發現這個也很好。 http://stackoverflow.com/questions/2689567/sql-server-select-top-1-record-of-all-the-distinct-records – Phani 2012-02-13 06:57:53

0

SELECT DISTINCT作品,而不是在一個特定的列。如果你只需要在用戶id,PAGEURL和最大的時間戳,一個簡單的GROUP BY是不夠的:

SELECT 
     UserID 
    , PageURL 
    , MAX(TimeStamp) AS MaxTimeStamp 
FROM 
     tblUserPageViews 
GROUP BY 
     UserID 

如果你想展示等欄目,也可以使用此上述查詢的「捆綁」到了一起原始表:

SELECT 
     t.PageURL, 
    , t.TimeStamp 
    , t.UserID 
    , t.UserPageViewsID 
FROM 
     tblUserPageViews AS t 
    JOIN 
     (SELECT 
       UserID 
      , PageURL 
      , MAX(TimeStamp) AS MaxTimeStamp 
     FROM 
       tblUserPageViews 
     GROUP BY 
       UserID 
    ) AS tm 
    ON 
     tm.UserID = t.UserID 
    AND 
     tm.PageURL = t.PageURL 
    AND 
     tm.MaxTimeStamp = t.TimeStamp 

如果您在SQL-服務器(2005或更高版本)的最新版本中,你也可以使用window functions來寫這個。

相關問題