相关疑难解决方法(0)

T-SQL跳过存储过程

我似乎在这个网站上没有太多运气,仍然永远是乐观主义者,我会继续努力.我有两个表,Journals和ArticleCategories使用此查询加入:

SELECT Journals.JournalId,
       Journals.Year,
       Journals.Title,
       ArticleCategories.ItemText
FROM   Journals
       LEFT OUTER JOIN ArticleCategories
         ON Journals.ArticleCategoryId = ArticleCategories.ArticleCategoryId 
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何重写这个使它成为一个Skip,Take查询.换句话说,我希望它跳过前n个记录,然后取下一个n.我认为ROW_NUMBER涉及某个地方,但在这种情况下我无法弄清楚如何使用它.

我怀疑没有太多运气的原因是我发现很难解释我想要做什么.如果我的问题不明确,请不要犹豫,告诉我哪里出错了,我很乐意再试一次.也许我还应该提一下,我试图把它放在一个存储过程中.非常感谢.非常感谢,

sql t-sql sql-server pagination

22
推荐指数
1
解决办法
2万
查看次数

在sql中选择特定的行号

有什么办法可以在SQL Server中选择指定的行数吗?就像我的第一个查询一样,我希望获得1-5行,然后是6-10行,然后是行?提前谢谢你的答案:)

sql sql-server

9
推荐指数
2
解决办法
7万
查看次数

SQL Server行号和过滤结果

我有一个需要在列表中显示数据“页面”的应用程序。基本想法是相当普遍的。显示屏显示项目列表,显示屏底部是一些控件,可让您转到数据的下一个“页面”。

一切都很好。我有这个工作。

以下是我用来支持“下一个”行为的视图中的SQL。

CREATE VIEW CampaignParticipants AS
SELECT  row_number() OVER (ORDER BY TPT.LastName, TPT.FirstName, TPT.DoB) AS RowNumber
        ,CGP.*
        ,TPT.*
FROM    tblCampaignGEDPush CGP
JOIN    tblParticipants TPT
ON      CGP.PartID = TPT.PartID
Run Code Online (Sandbox Code Playgroud)

这是我使用VIEW的方式

SELECT  *
FROM    CampaignParticipants
WHERE   RowNumber >= 0
AND     RowNumber <= 100
Run Code Online (Sandbox Code Playgroud)

这模拟了从VIEW抓取100个结果的“第一页”。通过每组结果的页面只是桃色。

很棒。但是:

正如一些处理过此问题的人可能知道的那样,这是有缺陷的。如果我想继续搜索TPT.LastName like 'R%'并获得第一组结果,那我就注定了。

我将要开始查看,在处RowNumber = 0停止RowNumber = 100,但“ R”结果可能会超出该范围。结果:列表返回为空。

而且它变得更加棘手:用户希望能够“过滤” LastName,FirstName,DoB,Location,Phone,Zip等任何内容。

**编辑:我真的不能将过滤器放在“内部”查询中,因为它在视图中,并且过滤器可以任意更改

任何人有任何想法如何得到这个结果集有一个row_number()过滤的结果集?

sql-server row-number

4
推荐指数
1
解决办法
1691
查看次数

标签 统计

sql-server ×3

sql ×2

pagination ×1

row-number ×1

t-sql ×1