2010-08-31 32 views
1

我有以下查詢,返回基於一些輸入參數組的列:實施ROW_NUMBER()到特定的查詢

WITH hierarchy AS (
    SELECT yt.id  
     FROM [dbo].[TH_Categories] yt 
     WHERE yt.ID = @topicID And CultureID = @cultureID 
    UNION ALL 
    SELECT yt.id  
     FROM [dbo].[TH_Categories] yt 
     JOIN hierarchy h ON h.ID = yt.ParentCategoryID) 
    Select id, 
      [SiteName] 
      ,[SiteURL] 
      ,[Description] 
      ,[Logo] 
      ,[CultureID] 
      ,[DateAdded], 
      dbo.GetSiteFollowers(id) AS Followers 
    from dbo.TH_Sites 
    where id in (Select Distinct SiteID 
        from dbo.TH_CategoryFeeds 
        Where CatID in (SELECT ID 
            FROM hierarchy t)) 

我試圖實現使用ROW_NUMBER()函數分頁,但我無法找到方法。

任何幫助將高度讚賞它。

+0

那你試試不工作? – 2010-08-31 20:20:35

+0

添加其他列TH_sites: ROW_NUMBER()OVER(由[ActivityDate] DESC順序) 'ROWNUMBER' ,結束於: 凡ROWNUMBER之間@rowStart和@rowEnd。 – 2010-08-31 20:29:33

回答

1

試試這個:

;WITH hierarchy AS 
(
    SELECT yt.id  
     FROM [dbo].[TH_Categories] yt 
     WHERE yt.ID = @topicID And CultureID = @cultureID 
    UNION ALL 
    SELECT yt.id  
     FROM [dbo].[TH_Categories] yt 
     JOIN hierarchy h ON h.ID = yt.ParentCategoryID 
) 
, YourRows AS 
(
    Select id, 
      [SiteName] 
      ,[SiteURL] 
      ,[Description] 
      ,[Logo] 
      ,[CultureID] 
      ,[DateAdded] 
      ,dbo.GetSiteFollowers(id) AS Followers 
      ,ROW_NUMBER() OVER (ORDER BY ActivityDate DESC) AS RowNumber 
    from dbo.TH_Sites 
    where id in (Select Distinct SiteID 
        from dbo.TH_CategoryFeeds 
        Where CatID in (SELECT ID 
            FROM hierarchy t)) 
) 
SELECT * FROM YourRows 
WHERE RowNumber>[email protected] and RowNumber<[email protected] 
+0

你是神。謝啦。 – 2010-08-31 20:44:36

0

有關尋呼技術的良好討論,請參閱S QL Server 2005 Paging – The Holy Grail

+0

我需要註冊閱讀全文:)。 – 2010-08-31 20:32:03

+0

註冊是免費的,[SQLServerCentral.com](http://www.sqlservercentral.com/)是一個很好的資源。它值得註冊30秒。 – 2010-08-31 20:33:31