排名函数,看看值出现多于1个SQL SERVER

时间:2015-05-18 17:16:26

标签: sql sql-server dense-rank

我在SQL SERVER尝试使用适当的Rank函数时需要一些建议和帮助。

基本上,我想要做的是计算合同协议在数据中重复的次数。在Excel中,我使用了Count(A:A;A2)

Cust_Nr    Contract Agreement Nr
5639232    19243062
10072067   3316516
10072067   3316516
5639232    19243062
20095770   49940680
10072067   3316516

我的问题是,有没有一种方法可以使用Rank of Rank Dense函数来计算出contract agreement Nr多次出现的次数?例如,contract agreement nr:3316516出现两次。我想要另一个列显示:

Cust_Nr    Contract Agreement Nr  Duplicate
5639232    19243062
10072067   3316516                3
10072067   3316516                3
5639232    19243062
20095770   49940680
10072067   3316516                3

因此contract agreement nr 3316516在数据中共出现3次。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

使用此功能,无需排名:

select *, count(*) over (partition by [Contract Agreement Nr]) as RowsPerContractNumber
from MyTable

编辑:如果您希望非重复行为空白,请使用:

select *
, case count(*) over (partition by [Contract Agreement Nr]) 
    when 1 then ''
    else cast(count(*) over (partition by [Contract Agreement Nr]) as varchar)
end
as RowsPerContractNumber
from MyTable