2010-08-31 34 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