Today: November 14, 2024
admin Posted on 10:54 am

Flag first occurrence of ID, mark second and third as 0

I have a dataset that looks something like this:

ID Age
AB138 19
FR296 27
JP311 13
AB138 32

And I would like to add a column that “flags” the first instance as 1, and any further instances of that specific ID as 0 (order does not matter, so “first” is irrelevant). Below is an example output, based on the above dataset

ID Age DistinctCt
AB138 19 1
FR296 27 1
JP311 13 1
AB138 32 0

Is there an easier way of accomplishing this? Old approach looked something like this:

select ID
,COUNT(ID) as Distinct_Tst
into #step2
from #step1
group by ID

select a.*, b.Distinct_Tst,(1/cast(Distinct_Tst as decimal)) as DistinctCt
from #step1 as a
left join #step2 as b on (a.id=b.id)
order by ID