创建唯一标识符列(1 或零)Rank () SQL SERVER

Creating unique identifier column(1 or zero) Rank () SQL SERVER

我正在尝试在 SQL SERVER 中创建一个显示 1 OR 0(零)的列。我有一列不止一次出现的客户编号。在第一次点击一个唯一的非重复客户号码时,它应该显示一个,如果重复则显示 0(零)。我该如何创建它?

CustNumber  Unique
25122134      1
25122134      0
25122134      0
25122136      1
25122136      0

我现在正在考虑和尝试的解决方案是 Rank() 和 Rank_DENSE()。

declare @test table
(
    CustNumber   int 
)

insert into @test values
(25122134),
(25122134),
(25122134),
(25122136),
(25122136)

select 
    * ,
    // each CustNumber in partition has the same rank, but different row_number
    case when (row_number() over (partition by CustNumber order by CustNumber)) = 1
         then 1 else 0 end as [Unique]        
         // the 1st is unique, the rest (2..n) are not
from @test    
order by CustNumber, [Unique] desc   
// unique in each group should be displayed first

您不需要 RANK,因为根据定义,相同的输入会产生相同的输出。

ROW_NUMBER() and a simple CASE 表达式应该这样做:

;WITH Numbered as (
  SELECT CustNumber,
       ROW_NUMBER() OVER (PARTITION BY CustNumber
                          ORDER BY CustNumber) as rn --Unusual - pick a real column if you have a preference
  FROM YourUnnamedTable
)
SELECT CustNumber,CASE WHEN rn = 1 THEN 1 ELSE 0 END as [Unique]
FROM Numbered