查询以获取所有不同的行,并添加一列以指示每个重复项的总和

时间:2018-12-11 21:46:21

标签: sql sql-server database windows-server-2012

我正在寻找什么:

我需要从SQL Server获取所有ID的列表,但是每个ID都有多行。 每个ID的某些行都是系统更新的,因此在我的查询中无需特别注意。

换句话说:

我需要获取整个列表,为每个ID计算系统以外的所有行。

数据库的外观如下:

ID | linenumber| data, data, ... data|Requesto| data, data

1  | 1         |.....................|JUAN    |...........
1  | 2         |.....................|SYSTEM  |...........
2  | 1         |.....................|Matias  |...........
2  | 2         |.....................|Matias  |...........
2  | 3         |.....................|Matias  |...........

我需要得到:

ID | CantRoWs  |.....................|WHO is  |...........

1  | 1         |.....................|JUAN    |...........
2  | 3         |.....................|Matias  |...........

我当时正在考虑使用如下所示的临时查询,但这是行不通的。

with temp as
    (
      SELECT OVER (PARTITION BY szCID ORDER BY gdReceived desc) as RowNum,*
      FROM TABLE1;
    )
    SELECT *, (Select count(szCID) from TABLE1 where szAccount <> 'system') AS Hits From temp 
    WHERE RowNum = 1

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我建议您从在公用表表达式中使用row_number()和count()开始:

{{1}}