2017-08-02 164 views
1

我有以下查询:如何比较有序数据集和数据集?

select * from events order by Source, DateReceived 

这给了我这样的事情:

enter image description here

我想获得我标记为蓝色的结果 - >当有两个或两个以上相等的ErrorNr-Entries来自相同的源。

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

这就是我想:

enter image description here

回答

2

通过选择应用的行数超过分区在你的桌子:

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

要么你可以运行(最大),具有对结果集的行数> 1个选项。或者,如果您需要详细信息,请使用与1相同的查询来扣除行编号。 然后,您可以对源编号和行编号进行连接,并且如果错误编号相同,则您有一个匹配项。

1

您可以通过如下使用分区。

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

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