标签: row-number

组内的LINQ到对象索引+用于不同的分组(也称为ROW_NUMBER与PARTITION BY等效)

经过大量的Google搜索和代码实验,我对一个复杂的C#LINQ-to-objects问题感到难过,在SQL中使用一对ROW_NUMBER()... PARTITION BY函数和一个或两个子查询很容易解决这个问题.

用语言来说,这就是我在代码中尝试做的事情 - 基本要求是从列表中删除重复的文档:

  1. 首先,按(Document.Title,Document.SourceId)对列表进行分组,假设(简化)类定义如下:
    class Document
    {
        string Title;
        int SourceId; // sources are prioritized (ID=1 better than ID=2)
    }
  2. 在该组中,为每个文档分配一个索引(例如,索引0 = =第一个文档,此标题来自此源,索引1 =第二个文档,此标题来自此源,等等).我喜欢SQL中相当于ROW_NUMBER()的东西!

  3. 现在分组(Document.Title,Index),其中Index在步骤#2中计算.对于每个组,只返回一个文档:Document.SourceId最低的文档.

步骤#1很简单(例如codepronet.blogspot.com/2009/01/group-by-in-linq.html),但我对步骤#2和#3感到困惑.我似乎无法构建一个无红色波形的C#LINQ查询来解决所有这三个步骤.

Anders Heilsberg关于这个帖子的帖子是我认为如果我能正确理解语法,那么上面的步骤#2和#3的答案.

我倾向于避免使用外部局部变量来执行索引计算,正如slodge.blogspot.com/2009/01/adding-row-number-using-linq-to-objects.html所建议的那样,因为该解决方案中断了如果外部变量被修改.

最佳地,可以首先完成逐个标题步骤,因此"内部"分组(首先由Source计算索引,然后通过索引来过滤掉重复项)可以对每个"按标题"的少量对象进行操作group,因为每个by-title组中的文档数量通常在100以下.我真的不想要N 2解决方案!

我当然可以用嵌套的foreach循环解决这个问题,但看起来像LINQ这个问题应该很简单.

有任何想法吗?

c# linq linq-to-objects group-by row-number

7
推荐指数
1
解决办法
4615
查看次数

如何在视图中添加ROW_NUMBER()?

在PostgreSQL 8.4中,我想从3个带id的表创建一个视图.所以我希望在我看来有这个结构:

num serial,
name_dispatcher character varying(250)
the_geom geometry
Run Code Online (Sandbox Code Playgroud)

我可以选择name_dispatcher,并the_geom从表:

 CREATE VIEW lineView
      AS SELECT 'name' AS name_dispatcher, the_geom
      FROM line1
      UNION
      SELECT 'name' AS name_dispatcher, the_geom
      FROM line2
      UNION
      SELECT 'name' AS name_dispatcher, the_geom
      FROM line3
Run Code Online (Sandbox Code Playgroud)

如何num在视图中创建列?

UPDATE

我找到了解决方案:

ROW_NUMBER() OVER(ORDER BY lineView.voltage)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用它ALTER VIEW.我怎么把它放在那里?

sql postgresql row-number sql-view

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

t-SQL查找每个组的前10个记录

我试图弄清楚如何返回每组Trans.TranSID的前10个记录.

SELECT a.ABID, a.ABName, t.TranSID, SUM(IIF(TranTypeID = 'CO', td.Qty * CAST(td.Price AS money) * - 1, 
                      td.Qty * CAST(td.Price AS money))) AS TotalSales
FROM         Trans t INNER JOIN
                      TransDetail td ON t.TranID = td.TranID INNER JOIN
                      ABook a ON t.TranABID = a.ABID
WHERE     (t.TranDate BETWEEN CONVERT(DATETIME, '2012-01-01 00:00:00', 102) AND CONVERT(DATETIME, '2013-01-01 00:00:00', 102)) AND 
           t.TranTypeID in ('SO','CA','CO') AND (t.TranStatus <> 'V')
GROUP BY a.ABID, a.ABName, t.TranSID
HAVING  (NOT (a.ABName LIKE '%cash%'))
ORDER BY t.TranSID, TotalSales Desc
Run Code Online (Sandbox Code Playgroud)

我可以在select语句中添加"TOP 10",但不管是哪个组,这都会给我前10个帐号.有25组Trans.TranSID,我试图获得每组的前10名.

sql t-sql subquery row-number

7
推荐指数
1
解决办法
7708
查看次数

Access select语句中的Row_Number()

我相信已经提出了类似的问题,但我找不到适合我的解决方案.

我有一个数据库,用于对数字化书籍及其页面进行排序,我正在尝试对包含地图的数千页进行排序.在我使用的第一个列表的两个表中列出了书中的所有页面以及它们在书中出现的顺序,它有三列(bookID,pageOrder,pageID),每个页面都有自己的行.第二个表列出了每个页面上发生的所有位置(在地图中),如果一个页面上有多个位置,则它有两列(pageID,placeID),然后为每个位置添加一个新行.

我需要做的是创建一个select语句,为每个pageID/placeID组合提供一个唯一的数字,但这些数字必须按照它们在书中出现的顺序排列.在SQL Server中我会这样做:

SELECT ROW_NUMBER() OVER(ORDER BY bp.bookID, bp.pageOrder, pp.placeID) AS uniqueNumber, pp.pageID, pp.placeID
FROM booksAndPages AS bp INNER JOIN pagesAndPlaces AS pp ON bp.pageID = pp.pageID
Run Code Online (Sandbox Code Playgroud)

不幸的是,我坚持使用Access.理想情况下,我想用一个SQL语句(如果可能)这样做,类似于上面的语句,但我也会尝试使用VBA.

任何帮助是极大的赞赏.

sql ms-access row-number

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

SQL将行转置为列(按键变量分组)?

我试图将行转换为列,按唯一标识符(CASE_ID)进行分组.

我有一个这种结构的表:

CASE_ID..AMOUNT..TYPE
100 ........ 10 ....... A
100 ........ 50 ....... B
100 ...... ..75 ....... A
200 ........ 33 ....... B
200 ........ 10 ....... C.

而我正试图查询它以产生这种结构......

CASE_ID ... AMOUNT_1 ... TYPE_1 ... AMOUNT_2 ... TYPE_2 ... AMOUNT_3 ... TYPE_3
100 ........... 10 ............ ......一个............. 50 ..................乙.......... ... 75 ................... A
200 ........... 33 ............. .....乙............. 10 ..................ç........... (空)...............(空)

(假设有更大的数据集,包含CASE_ID,TYPE和AMOUNT的大量可能值)

我尝试使用数据透视表,但我不需要聚合函数(只是尝试重组数据).现在我试图以某种方式使用row_number但不确定如何.

我基本上试图复制和SPSS命令调用Casestovars,但需要能够在SQL中执行它.谢谢.

transpose pivot row-number

7
推荐指数
1
解决办法
9182
查看次数

如何为ROW_NUMBER()获取替代值?

我有一个表格,其中包含以下值:

Name    Order    Innings
Suresh    1         1
Ramesh    2         1
Sekar     3         1
Raju      1         2
Vinoth    2         2
Ramu      3         2
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

1stInn  2ndInn  Order
Suresh  Raju      1
Ramesh  Vinoth    2
Sekar   Ramu      3
Run Code Online (Sandbox Code Playgroud)

ROW_NUMBER()在SQL Server中使用了结果.

我想在SQL Compact中获得相同的结果,但我无法ROW_NUMBER()在SQL Compact中使用.

我正在使用SQL Compact版本 - 4.0.8482.1

我怎样才能得到结果?

sql sql-server row-number sql-server-ce sql-server-ce-4

7
推荐指数
1
解决办法
203
查看次数

密集排名与订单

我有这样的作业表

EMPLID | RCD | COMPANY |   EFFDT       |  SALARY
---------------------------------------------------
100    | 0   | xyz     |   1/1/2000    |    1000
100    | 0   | xyz     |   1/15/2000   |    1100
100    | 0   | xyz     |   1/31/2000   |    1200
100    | 0   | ggg     |   2/15/2000   |    1500
100    | 1   | abc     |   3/1/2000    |    2000
100    | 1   | abc     |   4/1/2000    |    2100
Run Code Online (Sandbox Code Playgroud)

我需要一个计数器,当RCD或公司组合发生变化时,该计数器应该增加,并且应该由effdt订购.

EMPLID | RCD | COMPANY |   EFFDT       |  SALARY     | COUNTER
-------|-----|---------|---------------|-------------|----------
100    | …
Run Code Online (Sandbox Code Playgroud)

sql oracle row-number dense-rank rownum

7
推荐指数
1
解决办法
423
查看次数

表中的SSRS行号,不包括隐藏行

我使用以下表达式来获取SSRS中表的行号:

=RunningValue(CountDistinct("Table1"),Count,"Table1")
Run Code Online (Sandbox Code Playgroud)

我还使用行可见性属性的表达式.让我们说可见性表达式是

=IIf(Fields!MyField.Value + Fields!MyField.Value <> 0, False, True) 
Run Code Online (Sandbox Code Playgroud)

我对行号的表达式不考虑该行是否可见.

我显然可以更改我的数据集查询,但是可以只更改我的行号表达式以仅包含未隐藏的行吗?谢谢

hidden expression row-number reporting-services ssrs-expression

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

ROW_NUMBER() PARTITION BY ORDER BY 等效项的 DAX 表达式

我有一个这样的SQL语句:

(ROW_NUMBER() OVER (PARTITION BY a.[market], [MEASURE_TYPE] 
                    ORDER BY AM, REP, ORDER_KEY)) AS ORDER_KEY
Run Code Online (Sandbox Code Playgroud)

我想写一个DAX来实现上面的SQL语句。

sql row-number dax powerbi

6
推荐指数
1
解决办法
9656
查看次数

Android Room数据库查询支持row_number吗?

我试图让以下 sqlite 查询在我的 android room 数据库中工作,但它抱怨一些错误。

@Query("with cte as (\n" +
        "  select t.exercise_name,t.band, t.reps, t.weight\n" +
        "  from ( \n" +
        "    select *,\n"+      "" +
        "      row_number() over (partition by band order by reps desc) rnreps,\n" +
        "      row_number() over (partition by band, reps order by weight desc) rnweight" +
        "    from tracked_exercises\n" +
        "  ) t  \n" +
        "  where exercise_name = :name\n" +
        ")  \n" +
        "select * from cte c\n" +
        "where not exists (\n" …
Run Code Online (Sandbox Code Playgroud)

sql sqlite android row-number android-room

6
推荐指数
1
解决办法
1435
查看次数