创建唯一标识符列(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