我似乎在这个网站上没有太多运气,仍然永远是乐观主义者,我会继续努力.我有两个表,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 Server中选择指定的行数吗?就像我的第一个查询一样,我希望获得1-5行,然后是6-10行,然后是行?提前谢谢你的答案:)
我有一个需要在列表中显示数据“页面”的应用程序。基本想法是相当普遍的。显示屏显示项目列表,显示屏底部是一些控件,可让您转到数据的下一个“页面”。
一切都很好。我有这个工作。
以下是我用来支持“下一个”行为的视图中的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()对过滤的结果集?