Doesn't sound like there's any reason to use a cursor for this.
You can use COUNT()
with OVER()
and CASE
efficiently:
;WITH cte AS (SELECT *,COUNT(MOID) OVER(PARTITION BY MOID) MOID_CT
FROM MOSTEP)
SELECT MOID
,CASE WHEN MOID_CT = 1 THEN 'Something' ELSE 'SomethingElse' END
FROM cte
Demo: SQL Fiddle