如何将有序数据集与之前的数据集进行比较?

时间:2017-08-02 06:28:59

标签: sql sql-server

我有以下查询:

select * from events order by Source, DateReceived 

这给了我这样的东西:

enter image description here

我想得到我标记为蓝色的结果 - >来自相同来源的两个或多个相同的ErrorNr-Entries后面。

所以我必须将每行与之前的行进行比较。我怎样才能做到这一点?

这就是我想要的:

enter image description here

2 个答案:

答案 0 :(得分:2)

在桌子上按分区选项应用行号:

SELECT 
  ROW_NUMBER() OVER(PARTITION BY Source ORDER BY datereceived) 
    AS Row,
* FROM events

你可以运行一个(最大)有>结果集的行号为1个选项。或者,如果您需要详细信息,请应用相同的查询,将行nuber扣除1。 然后你可以在源和行号上建立一个连接,如果错误nr是相同的,那么你有一个命中。

答案 1 :(得分:1)

您可以按如下方式使用分区。

select * from(select 
*,row_number()over(partition by source,errornr order by Source, DateReceived) r
from
[yourtable])t
where r>1

您可以在外部选择中指定列名称。