标签: row-number

ROW_NUMBER()和nhibernate - 查找项目的页面

给定一个ICriteria对象形式的查询,我想使用NHibernate(通过投影?)来查找元素的顺序,其方式与使用相同

SELECT ROW_NUMBER() OVER (...)
Run Code Online (Sandbox Code Playgroud)

在查询中查找特定项目的索引.(我需要这个用于分页中的"跳转页面"功能)任何建议?

注意:我不想去一个页面给出它的数字 - 我知道该怎么做 - 我想得到项目的INDEX所以我可以按页面大小划分它并获得页面索引.

nhibernate paging row-number

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

是否可以使用SQL向GROUP BY添加标识?

是否可以向GROUP BY添加标识列,以便每个副本都有一个标识号?

我的原始数据如下所示:

1    AAA  [timestamp]
2    AAA  [timestamp]
3    BBB  [timestamp]
4    CCC  [timestamp]
5    CCC  [timestamp]
6    CCC  [timestamp]
7    DDD  [timestamp]
8    DDD  [timestamp]
9    EEE  [timestamp]
....
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

1    AAA   1
2    AAA   2
4    CCC   1
5    CCC   2
6    CCC   3
7    DDD   1
8    DDD   2
...
Run Code Online (Sandbox Code Playgroud)

解决方案是:

CREATE PROCEDURE [dbo].[RankIt]
AS
BEGIN
SET NOCOUNT ON;

SELECT  *, RANK() OVER(PARTITION BY col2 ORDER BY timestamp DESC) AS ranking 
FROM MYTABLE;

END
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server row-number

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

如何设置列值等于行号?

我如何设置在更改表之后添加的列的值等于sql server 2008中的行no.这就是我希望列的值等于no.排.我也希望这个字段允许NULL值.所以它就像自动增量但允许空值,这就是为什么不想使用带有自动增量的标识或主键列的原因.那怎么设置为排?任何帮助将不胜感激.

row-number sql-server-2008 sql-update

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

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
查看次数

在Where子句中选择带有ROW_NUMBER()OVER(PARTITION BY ...)的stmt

我一定做错了什么.我正在尝试使用row_number函数来只选择rownum为1的值,这样我总能得到最新的索引.但是在where子句中不识别rownum.

SELECT  fs.docu_id as docID 
, fs.field_3 AS ProductNo
, fs.field_4 AS [Status]
, fs.field_5 AS [Index]
,pd.[doku_nr] AS docIDshort
, ROW_NUMBER() OVER(PARTITION BY fs.field_3 ORDER BY fs.field_5 Desc) AS rownum
FROM [table1] fs
JOIN [table2] pd
ON fs.docu_id=pd.docu_id 
AND  fs.field_4 = 'valid'
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我是否需要创建不同的select stmt?

谢谢.

t-sql sql-server row-number sql-server-2012

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

SQL Server 2012 row_number ASC DESC性能

在SQL Server 2012版本11.0.5058中,我有一个这样的查询

SELECT TOP 30 
    row_number() OVER (ORDER BY SequentialNumber ASC) AS [row_number], 
    o.Oid, StopAzioni 
FROM 
    tmpTestPerf O 
INNER JOIN
    Stati s on O.Stato = s.Oid
WHERE 
    StopAzioni = 0
Run Code Online (Sandbox Code Playgroud)
  • 当我使用ORDER BY SequentialNumber ASC它需要400毫秒
  • 当我ORDER BY DESC在row_number函数中使用它只需要2 ms

(这是在测试环境中,在生产中它是7000,7秒对15毫秒!)

分析执行计划,我发现两个查询都是一样的.有趣的区别是,在较慢的stopazioni = 0情况下,它适用于按条件过滤的所有行,117k行

在更快的速度,它只使用53行

tmpTestPerf查询上有一个主键,序列号列上有索引的ASC键.

如何解释?

问候.丹尼尔

这是tmpTestPerfQuery和Stati查询及其索引的脚本

CREATE TABLE [dbo].[tmpTestPerf]
(
    [Oid] [uniqueidentifier] NOT NULL,
    [SequentialNumber] [bigint] NOT NULL,
    [Anagrafica] [uniqueidentifier] NULL,
    [Stato] [uniqueidentifier] NULL,

    CONSTRAINT [PK_tmpTestPerf] 
      PRIMARY KEY CLUSTERED ([Oid] ASC) …
Run Code Online (Sandbox Code Playgroud)

sql-server row-number sql-server-2012

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

ROW_NUMBER()OVER(),在H2中按顺序排列

我正在尝试使用ROW_NUMBER子句对H2数据库中的表执行查询.这是我的查询:

SELECT ROW_NUMBER() OVER (order by data), name FROM students
Run Code Online (Sandbox Code Playgroud)

但我在H2控制台中出错:

SQL语句中的语法错误"SELECT ROW_NUMBER()OVER(按数据排序[*]),名称FROM学生"; 预期的")";

我注意到它只有在OVER子句为空时才有效,如OVER();

有任何想法吗?

database row-number h2

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

TSql返回基于分区和rownumber的列

我有一个SQL服务器表,我试图获取一个计算列 - MyPartition - 指示基于变量@segment的分区数.例如,如果@segment = 3,则以下输出为真.

RowID  | RowName    | MyPartition
------ | -----------| -------
1      | My Prod 1  | 1
2      | My Prod 2  | 1
3      | My Prod 3  | 1
4      | My Prod 4  | 2
5      | My Prod 5  | 2
6      | My Prod 6  | 2
7      | My Prod 7  | 3
8      | My Prod 8  | 3
9      | My Prod 9  | 3
10 …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server row-number rank partition-by

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

SQL第一个命令,然后在over子句中分区

我有一个问题,我想分区排序表.有没有办法可以做到这一点?

我正在使用SQL Server 2016.

输入表:

|---------|-----------------|-----------|------------|
|  prod   |   sortcolumn    |    type   |    value   |
|---------|-----------------|-----------|------------|
|    X    |        1        |     P     |     12     |
|    X    |        2        |     P     |     23     |
|    X    |        3        |     E     |     34     |
|    X    |        4        |     P     |     45     |
|    X    |        5        |     E     |     56     |
|    X    |        6        |     E     |     67     |
|    Y    |        1        |     P     |     78     |
|---------|-----------------|-----------|------------| …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server row-number gaps-and-islands

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

ROW_NUMBER()仅适用于前N个记录

我有一个方案来获得基于Id列的结果集的零索引值.我能做到这一点ROW_NUMBER().但现在的预期行为略有变化.

对于前五个记录,只有IndexValue需要显示的内容IndexValue应该是剩余的条目NULL.

为了实现这一点,我设置了IndexValueby ROW_NUMBER(),推入一个表变量@PopulateValues,然后使用UPDATE我获得预期的结果,如下所示:

我尝试过的:

-- Actual Table in database
DECLARE @OriginalTable TABLE (Id INT IDENTITY(1, 1), [Name] VARCHAR (255));
INSERT INTO @OriginalTable ([Name]) VALUES 
('Name 01'), ('Name 02'), ('Name 03'), ('Name 04'), ('Name 05'), 
('Name 06'), ('Name 07'), ('Name 08'), ('Name 09'), ('Name 10'), 
('Name 11'), ('Name 12'), ('Name 13'), ('Name 14'), ('Name 15');

-- Table variable for the populate …
Run Code Online (Sandbox Code Playgroud)

sql sql-server select row-number

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